Saya membuat peta web menggunakan Leaflet , dan saya ingin dapat mengambil lapisan fitur dari ArcServer kami. Saya telah berhasil mengambil kelas fitur sebagai JSON, tetapi objek JSON Esri tidak mengikuti standar GeoJSON sehingga tidak dapat ditampilkan.
Adakah yang tahu tentang skrip konversi atau alat yang menangani ini?
Jika tidak, saya berencana membuat skrip untuk mengkonversi objek JSON ArcServer ke GeoJSON.
arcgis-server
json
geojson
leaflet
Penyamak
sumber
sumber
Jawaban:
OGR:
Perintah itu akan membaca hasil kueri langsung dari URL. Anda juga dapat menyediakannya dengan file teks yang berisi JSON Anda atau Anda dapat langsung memasok JSON yang disandikan pada baris perintah. Anda tentu saja dapat menggunakan binding ORG Python untuk mengotomatiskannya dalam skrip jika perlu, atau perpustakaan untuk melakukannya dalam kode.
Bagi mereka yang menyukai layanan web, lihat Ogre klien web ogr2ogr yang dapat mengkonversi json ke geojson ke dan kembali, serta geojson ke shapefile.
Referensi: http://www.gdal.org/drv_geojson.html
sumber
Anda juga dapat melihat geojson-utils Esri di Github yang "berisi utilitas [javascript] untuk mengubah GeoJSON ke format json geografis lainnya dan sebaliknya. Saat ini hanya GeoJSON ke Esri JSON yang telah dikembangkan. Juga, perhatikan bahwa hanya geometri dalam sistem koordinat WGS84 didukung. "
sumber
geojson-utils
sudah usang. Lihat arcgis-to-geojson-utils atau terraformerESRI JSON ke GeoJSON (untuk OpenLayers) * Kemungkinan akan dimodifikasi untuk javascript Leaflet
sumber: http://mapbutcher.com/blog/?p=62
sumber
ArcGIS sekarang mendukung GeoJSON
Sekarang ArcGIS Online memiliki GeoJSON melalui URL API Istirahat ArcGIS. Yang perlu Anda lakukan adalah mengatur
f=geojson
di URL dan mengkonfigurasi layanan. Ketahuilah, secara default, ArcGIS online tidak akan mengizinkan GeoJSON mengekspor hingga Anda secara eksplisit mengizinkan format output lainnya.Berikut ini cara mengaktifkan ekspor:
Di halaman permintaan, Anda akan melihat daftar dropdown format output dengan opsi GeoJSON. Yang lama dipanggil
json
.sumber
Leaflet dan layer vektor ArGIS.
https://github.com/JasonSanford/leaflet-vector-layers
Demo kerja. http://geojason.info/leaflet-vector-layers/demos/arcgis-server/
Lebih lanjut tentang Leaflet dan ArcGIS.
Anda bisa mendapatkan garpu ini yang memiliki dukungan untuk server ArcGIS.
https://github.com/dtsagile/Leaflet/
http://blog.davebouwman.com/2011/08/04/leaflet-lean-mean-javascript-maps/
ArcGIS Image Services and Leaflet http://blog.geomusings.com/2012/04/17/arcgis-image-services-and-leaflet/
sumber
Saya telah membangun ekstensi objek server untuk menghasilkan GeoJSON dari layanan peta ArcGIS Server. Sudah diuji dengan 10.1 dan 10.2 tetapi tidak lebih awal. https://github.com/geobabbler/AGSOpenFormats
sumber
Untuk konversi satu kali, saya akan menggunakan jawaban yang diterima dari @Sasa Ivetic tetapi membutuhkan sesuatu waktu nyata, dan Terraformer bekerja dengan baik untuk itu. Sayangnya itu hanya untuk fitur tunggal secara default, jadi untuk beberapa fitur Anda perlu mengulang-ulang array dan menambahkan ID ke setiap fitur:
Ini bekerja dengan baik bagi saya kecuali pada poligon multi-bagian (yaitu Alaska dan pulau-pulau), tapi saya baru dalam hal ini sehingga mungkin saya salah mengartikan sesuatu!
sumber
Konversi ArcGIS JSON ke GeoJSONThere di Browser murni
ada 2 cara yang bisa kamu lakukan
1) TERRAFORMER
Catatan: gunakan di node.js dan digunakan di browser berbeda , detail lihat tautan
2) Esri / arcgis-to-geojson-utils
digunakan di browser, ArcgisToGeojsonUtils adalah referensi global titik masuk modul ini
});
Namun, jika Anda ingin bergabung sendiri, hanya untuk belajar, ikuti langkah-langkahnya
a) Anda perlu mengkompilasi semua file sumber modul ke dalam satu bundle.js
rollup.js pasang oleh
kemudian pergi ke folder root js lib Anda, cari file entry point js, dalam hal ini adalah index.js
Anda harus menemukan file bundle.js baru di direktori root Anda.
Sekarang di file html browser Anda, termasuk file bundle.js ini
Anda dapat menggunakannya sekarang dengan
Ingat esri_arcgis_to_geojson adalah nama yang Anda beri nama lib
Ini menjadi nama variabel global, tersedia di browser.
Caranya adalah, proses bundel menambahkan fungsi implement instan seperti (function xx {}) di sini adalah bagian teratas dari bundle.js
arcgis-to-geojson-utils
sumber
Biasanya * konversi yang cukup mudah.
Saya membuat skrip https://github.com/calvinmetcalf/esri2geo dan ada yang lain juga berfungsi dengan baik.
* Pengecualian adalah poligon multi-bagian dengan lubang yang tidak mengkonversi 1-ke-1 tanpa geoprocessing.
sumber
Jika ini permintaan satu kali dan Anda tidak memiliki lebih dari 1000 fitur, coba tempelkan ini ke dalam qgis dengan menggunakan add vector layer - pilih protokol dan ganti URL sisa arcgis ini dengan Anda: http://geodata.epa.gov/arcgis / rest / services / OAR / USEPA_NEI_2005 / MapServer / 1 / query? where = objectid +% 3D + objectid & outfields = * & f = json ... Ini mengasumsikan Anda telah menginstal gdal 1.10
sumber
Mungkin lebih mudah Anda bisa menggunakan pustaka Esri-leaflet untuk menambahkannya secara native sebagai layer di Leaflet.
sumber
Jika yang Anda butuhkan adalah mengembalikan Layanan ArcServer sebagai GeoJSON untuk digunakan dalam teknologi pemetaan mana pun yang Anda inginkan, saya sangat menyarankan Anda melihat dialog masalah GitHub ini .
Saya tidak akan meniru dialog di sini karena itu akan membuang waktu. Pilihan Anda jelas diletakkan di sana langsung dari Esri.
sumber
arcgis server rest api, layanan fitur,
jika Anda query layer, dengan URL seperti ini, ... / FeatureServer / query? layerDefs = ...
Anda tidak dapat mengatur format geojson, f = pgeojson akan menjadi permintaan yang buruk, f = json, karena barang yang dikembalikan bukan fitur, lapisan json dikembalikan.
Coba halaman permintaan html ini, Anda dapat melihat, tidak ada opsi geojson,
Jika Anda ingin mengembalikan geojson (fitur), Anda harus menggunakan URL ini ... / FeatureServer / 0 / query ...
/ 0 / berarti layerID, jika pada hanya memiliki 1 layer, maka layerID = 0 .....
Coba halaman permintaan html ini, Anda dapat melihat, geojson adalah opsi, karena Anda adalah lapisan spesifik permintaan dengan layerID = 0
Catatan: ingat untuk mengatur 2 parameter: outSR = 4326 & f = geojson di ID referensi spasial URL, srid = 4326, karena peta web semua menggunakan ini, f berarti format, baik f = pgeojson dan f = geojson works. Jika Anda tidak menetapkanSR = 4326, arc rest server arcgis secara default TIDAK akan menggunakan 4326, alih-alih menggunakan sesuatu yang lain, hanya 4326 yang memiliki derajat satuan, yang digunakan di sebagian besar peta web. Format lain tidak akan berfungsi dengan peta web.
By the way, bagi mereka yang ingin menggunakan arcgis server rest api dengan layanan ubin,
tilestream dan lainnya
/zoom(z)/x/y.png
layanan ubin server arcgis: tidak ada png, x dan y dalam urutan berbeda
http://services3.arcgis.com/your_token/ArcGIS/rest/services/Parcels/MapServer/tile/12/1641/706
sumber