Je crée une carte Web à l'aide de Leaflet et je veux pouvoir récupérer des couches d'entités à partir de notre ArcServer. J'ai réussi à récupérer une classe d'entités au format JSON, mais les objets JSON d'Esri ne sont pas conformes aux normes GeoJSON et ne peuvent donc pas être affichés.
Est-ce que quelqu'un connaît un script de conversion ou un outil qui gère cela?
Sinon, je prévois de créer un script pour convertir les objets JSON ArcServer en GeoJSON.
arcgis-server
json
geojson
leaflet
Tanneur
la source
la source
Réponses:
OGR:
Cette commande lira le résultat de la requête directement à partir de l'URL. Vous pouvez également lui fournir un fichier texte contenant votre JSON ou directement un JSON codé sur la ligne de commande. Vous pouvez bien sûr utiliser les liaisons ORG Python pour l’automatiser dans un script si nécessaire, ou la bibliothèque pour le faire en code.
Pour ceux qui aiment les services Web, voir Ogre, un client Web ogr2ogr capable de convertir json en géojson, puis de geojson au fichier de formes.
Référence: http://www.gdal.org/drv_geojson.html
la source
Vous pouvez également voir les geojson-utils d’ Esri sur Github qui "contient des utilitaires [javascript] permettant de convertir GeoJSON en formats json géographiques et inversement. Actuellement, seul GeoJSON vers JSON Esri a été développé. Notez également que seules les géométries du système de coordonnées WGS84 ont été développées. sont pris en charge. "
la source
geojson-utils
est obsolète. Voir arcgis-to-geojson-utils or terraformerESRI JSON à GeoJSON (pour OpenLayers) * susceptible d'être modifié pour Leaflet javascript
source: http://mapbutcher.com/blog/?p=62
la source
ArcGIS prend désormais en charge GeoJSON
Désormais, ArcGIS Online utilise GeoJSON via l'URL de l'API ArcGIS Rest. Tout ce que vous avez à faire est de définir
f=geojson
l'URL et de configurer le service. Sachez que, par défaut, ArcGIS Online n'autorise pas l' exportation GeoJSON tant que vous n'autorisez pas explicitement d'autres formats de sortie.Voici comment activer l'exportation:
Dans la page de requête, vous devriez voir la liste déroulante de format de sortie avec l'option GeoJSON. Le vieux s'appelait
json
.la source
Couche Leaflet et vecteur ArGIS.
https://github.com/JasonSanford/leaflet-vector-layers
Démo de travail. http://geojason.info/leaflet-vector-layers/demos/arcgis-server/
Plus d'informations sur Leaflet et ArcGIS.
Vous pouvez obtenir ce fork qui prend en charge le serveur 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/
la source
J'ai créé une extension d'objet serveur pour générer GeoJSON à partir des services de carte ArcGIS Server. Il a été testé avec 10.1 et 10.2 mais pas plus tôt. https://github.com/geobabbler/AGSOpenFormats
la source
Pour une conversion ponctuelle, j'aurais utilisé la réponse acceptée de @Sasa Ivetic, mais j'avais besoin de quelque chose en temps réel et Terraformer a travaillé correctement pour cela. Malheureusement, il s’agit uniquement de fonctionnalités uniques par défaut. Vous devez donc parcourir en boucle la matrice et ajouter un ID à chaque fonctionnalité:
Cela a bien fonctionné pour moi, sauf pour les polygones en plusieurs parties (c'est-à-dire l'Alaska et ses îles), mais je suis novice dans ce domaine et il est donc possible que j'ai mal codé quelque chose!
la source
Conversion d'ArcGIS JSON en GeoJSONThere dans un navigateur pur
il y a 2 façons de faire
1) TERRAFORMER
Note: utilisation dans node.js et utilisation dans le navigateur sont différentes , détails voir lien
2) Esri / arcgis-to-geojson-utils
utiliser dans le navigateur, ArcgisToGeojsonUtils est une référence var globale du point d’entrée de ce module
});
Toutefois, si vous souhaitez regrouper par vous-même, juste pour apprendre, suivez les étapes
a) Vous devez compiler tout le fichier source du module dans un seul bundle.js
rollup.js installer par
puis allez dans votre dossier racine js lib, recherchez le fichier js du point d’entrée, dans ce cas c’est index.js
Vous devriez trouver un nouveau fichier bundle.js dans votre répertoire racine.
Maintenant, dans le fichier html de votre navigateur, incluez ce fichier bundle.js
Vous pouvez l'utiliser maintenant par
Rappelez-vous que esri_arcgis_to_geojson est le nom que vous avez appelé la lib
Cela devient le nom de la variable globale, disponible dans le navigateur.
Le truc, c’est que le processus de groupement ajoute une fonction d’implémentation instantanée comme (fonction xx {}), voici la partie supérieure de bundle.js
arcgis-to-geojson-utils
la source
C'est généralement * très facile à convertir.
J'ai créé un script https://github.com/calvinmetcalf/esri2geo et d'autres fonctionnent également.
* L'exception concerne les polygones en plusieurs parties avec des trous qui ne sont pas convertis 1 à 1 sans géotraitement.
la source
Si c'est une requête unique et que vous n'avez pas plus de 1000 fonctionnalités, essayez de la coller dans qgis en utilisant le calque add vector - choisissez le protocole et remplacez cette URL de repos arcgis par la vôtre: http://geodata.epa.gov/arcgis / rest / services / OAR / USEPA_NEI_2005 / MapServer / 1 / query? où = objectid +% 3D + objectid & outfields = * & f = json ... Cela suppose que gdal 1.10 est installé
la source
Peut-être même plus facilement, vous pouvez utiliser la bibliothèque Esri- Leaflet pour l'ajouter de manière native en tant que couche dans Leaflet.
la source
Si tout ce dont vous avez besoin est de renvoyer le service ArcServer en tant que GeoJSON à utiliser dans la technologie de cartographie de votre choix, je vous recommande vivement de consulter ce dialogue relatif au problème GitHub .
Je ne vais pas reproduire le dialogue ici car cela ferait perdre du temps. Vos options sont clairement définies directement depuis Esri.
la source
serveur arcgis rest api, service d'entités,
si vous interrogez la couche, avec une URL telle que celle-ci, ... / FeatureServer / query? layerDefs = ...
Vous ne pouvez pas définir le format geojson, f = pgeojson sera une mauvaise requête, f = json, car les informations de retour ne sont pas des fonctionnalités, les couches que json a renvoyées.
Essayez cette page de requête html, vous pouvez voir, pas d’option geojson,
Si vous souhaitez renvoyer geojson (fonctionnalité), vous devez utiliser cette URL ... / FeatureServer / 0 / query ...
/ 0 / signifie que layerID, s'il est sur 1 couche, alors layerID = 0 .....
Essayez cette page de requête html, vous pouvez voir, geojson est une option, car vous couchez une couche spécifique avec layerID = 0
Remarque: n'oubliez pas de définir ces 2 paramètres: outSR = 4326 & f = geojson dans l'ID de référence spatiale de l'URL, srid = 4326, car la carte Web utilise tous ce format, le format f signifie, f = pgeojson et f = geojson fonctionnent. Si vous ne définissez pas outSR = 4326, l'API restante du serveur Arcgis, par défaut, n'utilisera PAS 4326, mais une autre méthode. Seul 4326 a un degré unitaire, qui est utilisé dans la plupart des cartes Web. Les autres formats ne fonctionneraient pas avec les cartes Web.
À propos, pour ceux qui veulent utiliser l’application de repos de serveur d’arcgis avec le service de tuiles,
tilestream et autres
/zoom(z)/x/y.png
Service de tuiles de serveur Arcgis: pas de png, x et y dans un ordre différent
http://services3.arcgis.com/your_token/ArcGIS/rest/services/Parcels/MapServer/tile/12/1641/706
la source