Ich erstelle eine Webkarte mit Leaflet und möchte Feature-Layer von unserem ArcServer abrufen können. Es ist mir gelungen, eine Feature-Class als JSON abzurufen, aber die JSON-Objekte von Esri entsprechen nicht den GeoJSON-Standards, sodass sie nicht angezeigt werden können.
Kennt jemand ein Konvertierungsskript oder Tool, das dies erledigt?
Wenn nicht, plane ich, ein Skript zum Konvertieren von ArcServer JSON-Objekten in GeoJSON zu erstellen.
arcgis-server
json
geojson
leaflet
Gerber
quelle
quelle
Antworten:
OGR:
Dieser Befehl liest das Abfrageergebnis direkt von der URL. Sie können es auch mit einer Textdatei versehen, die Ihren JSON-Code enthält, oder Sie können den codierten JSON-Code direkt in der Befehlszeile eingeben. Sie können natürlich ORG Python-Bindungen verwenden, um es bei Bedarf innerhalb eines Skripts zu automatisieren, oder die Bibliothek, um es in Code auszuführen.
Für diejenigen, die Webdienste mögen, finden Sie unter Ogre einen ogr2ogr-Webclient, der Json in Geojson in und zurück sowie Geojson in Shapefile konvertieren kann.
Referenz: http://www.gdal.org/drv_geojson.html
quelle
Sie können auch Esris Geojson-Utils auf Github sehen, die [Javascript] -Dienstprogramme zum Konvertieren von GeoJSON in andere geografische Json-Formate und umgekehrt enthalten. Derzeit wurde nur GeoJSON in Esri JSON entwickelt. Beachten Sie außerdem, dass nur Geometrien im WGS84-Koordinatensystem vorhanden sind sind unterstützt."
quelle
geojson-utils
ist veraltet. Siehe arcgis-to-geojson-utils oder terraformerESRI JSON zu GeoJSON (für OpenLayers) * Wird wahrscheinlich für Leaflet Javascript geändert
Quelle: http://mapbutcher.com/blog/?p=62
quelle
ArcGIS unterstützt jetzt GeoJSON
Jetzt verfügt ArcGIS Online über GeoJSON über die URL der ArcGIS Rest-API. Sie müssen lediglich
f=geojson
die URL eingeben und den Dienst konfigurieren. Beachten Sie , dass ArcGIS Online standardmäßig keinen GeoJSON-Export zulässt, bis Sie explizit andere Ausgabeformate zulassen.So aktivieren Sie den Export:
Auf der Abfrageseite sollte die Dropdown-Liste Ausgabeformat mit der Option GeoJSON angezeigt werden. Der Alte wurde gerufen
json
.quelle
Prospekt- und ArGIS-Vektorebene.
https://github.com/JasonSanford/leaflet-vector-layers
Arbeitsdemo. http://geojason.info/leaflet-vector-layers/demos/arcgis-server/
Weitere Informationen zu Leaflet und ArcGIS.
Sie können diese Abzweigung erhalten, die Unterstützung für ArcGIS-Server bietet.
https://github.com/dtsagile/Leaflet/
http://blog.davebouwman.com/2011/08/04/leaflet-lean-mean-javascript-maps/
ArcGIS Image Services und Broschüre http://blog.geomusings.com/2012/04/17/arcgis-image-services-and-leaflet/
quelle
Ich habe eine Serverobjekterweiterung erstellt, um GeoJSON aus ArcGIS Server-Karten-Services zu generieren. Es wurde mit 10.1 und 10.2 getestet, aber nicht früher. https://github.com/geobabbler/AGSOpenFormats
quelle
Für eine einmalige Konvertierung hätte ich die akzeptierte Antwort von @Sasa Ivetic verwendet, brauchte aber etwas in Echtzeit, und Terraformer hat anständig dafür gearbeitet. Leider ist dies standardmäßig nur für einzelne Features vorgesehen. Für mehrere Features müssen Sie eine Schleife durch das Array führen und jedem Feature eine ID hinzufügen:
Das hat bei mir gut funktioniert, außer bei mehrteiligen Polygonen (z. B. Alaska und seine Inseln), aber ich bin neu darin, daher ist es möglich, dass ich etwas falsch codiert habe!
quelle
Konvertieren von ArcGIS JSON in GeoJSON Dort im reinen Browser
Es gibt zwei Möglichkeiten
1) TERRAFORMER
Hinweis: Verwendung in node.js und Verwendung im Browser sind unterschiedlich , Details siehe Link
2) Esri / Arcgis-to-Geojson-Utils
Für die Verwendung im Browser ist ArcgisToGeojsonUtils eine globale var-Referenz, die den Einstiegspunkt dieses Moduls darstellt
});
Wenn Sie jedoch alleine bündeln möchten, nur zum Lernen, befolgen Sie die folgenden Schritte
a) Sie müssen die gesamte Modulquelldatei in eine einzige bundle.js kompilieren
rollup.js installieren von
Wechseln Sie dann in Ihren js lib-Stammordner und suchen Sie die js-Datei für den Einstiegspunkt. In diesem Fall handelt es sich um index.js
Sie sollten eine neue Datei bundle.js in Ihrem Stammverzeichnis finden.
Fügen Sie nun in die HTML-Datei Ihres Browsers die Datei bundle.js ein
Sie können es jetzt von verwenden
Denken Sie daran, esri_arcgis_to_geojson ist der Name, den Sie als lib bezeichnet haben
Dies wird zum globalen Variablennamen, der im Browser verfügbar ist.
Der Trick ist, Bundle-Prozess fügen Sie Instant-Implement-Funktion wie (Funktion xx {}) hier ist der obere Teil von bundle.js
arcgis-to-geojson-utils
quelle
Es ist normalerweise * ziemlich einfach zu konvertieren.
Ich habe ein Skript https://github.com/calvinmetcalf/esri2geo erstellt und es gibt auch andere, die gut funktionieren.
* Die Ausnahme sind mehrteilige Polygone mit Löchern, die ohne Geoverarbeitung nicht 1: 1 konvertieren.
quelle
Wenn es sich um eine einmalige Abfrage handelt und Sie nicht über mehr als 1000 Funktionen verfügen, versuchen Sie, diese mithilfe des Layers "Vektor hinzufügen" in qgis einzufügen. Wählen Sie ein Protokoll aus und ersetzen Sie diese arcgis-Rest-URL durch Ihre URL: http://geodata.epa.gov/arcgis / rest / services / OAR / USEPA_NEI_2005 / MapServer / 1 / query? where = objectid +% 3D + objectid & outfields = * & f = json ... Dies setzt voraus, dass Sie gdal 1.10 installiert haben
quelle
Vielleicht noch einfacher können Sie die Esri-Faltblattbibliothek verwenden , um sie nativ als Ebene im Faltblatt hinzuzufügen.
quelle
Wenn Sie den ArcServer-Service nur als GeoJSON zurückgeben müssen, um ihn in der gewünschten Mapping-Technologie zu verwenden, sollten Sie sich unbedingt diesen GitHub- Problemdialog ansehen .
Ich werde den Dialog hier nicht wiederholen, weil das Zeit verschwenden würde. Ihre Möglichkeiten werden dort direkt von Esri übersichtlich dargestellt.
quelle
ArcGIS Server Rest API, Feature-Service,
Wenn Sie den Layer mit einer URL wie dieser abfragen, ... / FeatureServer / query? layerDefs = ...
Sie können kein Geojson-Format einstellen, f = pgeojson wird eine schlechte Anfrage sein, f = json, weil das Rückgabematerial keine Funktion hat, die Schichten json wurden zurückgegeben.
Versuchen Sie diese HTML-Abfrageseite, Sie können sehen, keine Geojson-Option,
Wenn Sie Geojson (Feature) zurückgeben möchten, müssen Sie diese URL verwenden ... / FeatureServer / 0 / query ...
/ 0 / bedeutet layerID, wenn on nur 1 Layer hat, dann ist layerID = 0 .....
Probieren Sie diese HTML-Abfrageseite aus. Sie sehen, Geojson ist eine Option, da Sie einen bestimmten Layer mit der Layer-ID 0 abfragen
Hinweis: Denken Sie daran, diese beiden Parameter festzulegen: outSR = 4326 & f = geojson in der URL-Raumbezugs-ID srid = 4326, da alle Webkarten dieses Format verwenden. F bedeutet, dass sowohl f = pgeojson als auch f = geojson funktionieren. Wenn Sie outSR = 4326 nicht festlegen, verwendet arcgis server rest api standardmäßig NICHT 4326, sondern nur 4326 mit dem Einheitsgrad, der in den meisten Webkarten verwendet wird. Andere Formate funktionieren mit Webkarten nicht.
Übrigens, für diejenigen, die arcgis server rest api mit tile service verwenden möchten,
tilestream und andere
/zoom(z)/x/y.png
Kachelservice für ArcGis-Server: Keine PNG, X und Y in unterschiedlicher Reihenfolge
http://services3.arcgis.com/your_token/ArcGIS/rest/services/Parcels/MapServer/tile/12/1641/706
quelle