Estoy creando un mapa web con Leaflet , y quiero poder tomar capas de entidades de nuestro ArcServer. He podido recuperar con éxito una clase de entidad como JSON, pero los objetos JSON de Esri no siguen los estándares GeoJSON, por lo que no se pueden mostrar.
¿Alguien sabe de una secuencia de comandos de conversión o herramienta que maneja esto?
Si no, planeo crear un script para convertir objetos JSON de ArcServer a GeoJSON.
arcgis-server
json
geojson
leaflet
Curtidor
fuente
fuente
Respuestas:
OGR:
Ese comando leerá el resultado de la consulta directamente desde la URL. También puede proporcionarle un archivo de texto que contenga su JSON o puede proporcionar directamente JSON codificado en la línea de comando. Por supuesto, puede usar enlaces ORG Python para automatizarlo dentro de un script si es necesario, o la biblioteca para hacerlo en código.
Para aquellos a los que les gustan los servicios web, vea Ogre, un cliente web ogr2ogr que puede convertir json a geojson y viceversa, así como geojson a shapefile.
Referencia: http://www.gdal.org/drv_geojson.html
fuente
También puede ver las utilidades geojson de Esri en Github que "contienen utilidades [javascript] para convertir GeoJSON a otros formatos geográficos json y viceversa. Actualmente solo se ha desarrollado GeoJSON a Esri JSON. Además, tenga en cuenta que solo las geometrías en el sistema de coordenadas WGS84 son compatibles."
fuente
geojson-utils
está en desuso. Ver arcgis-to-geojson-utils o terraformerESRI JSON a GeoJSON (para OpenLayers) * Probable de ser modificado para JavaScript de folleto
fuente: http://mapbutcher.com/blog/?p=62
fuente
ArcGIS ahora es compatible con GeoJSON
Ahora ArcGIS Online tiene GeoJSON a través de ArcGIS Rest API URL. Todo lo que necesita hacer es establecer
f=geojson
en la URL y configurar el servicio. Tenga en cuenta que, de forma predeterminada, ArcGIS en línea no permitirá la exportación de GeoJSON hasta que explícitamente permita otros formatos de salida.Aquí se explica cómo habilitar la exportación:
En la página de consulta, debería ver la lista desplegable del formato de salida con la opción GeoJSON. El viejo fue llamado
json
.fuente
Folleto y capa vectorial ArGIS.
https://github.com/JasonSanford/leaflet-vector-layers
Demo de trabajo. http://geojason.info/leaflet-vector-layers/demos/arcgis-server/
Más sobre Folleto y ArcGIS.
Puede obtener esta bifurcación que tiene soporte para el servidor ArcGIS.
https://github.com/dtsagile/Leaflet/
http://blog.davebouwman.com/2011/08/04/leaflet-lean-mean-javascript-maps/
Servicios de ArcGIS Image y folleto http://blog.geomusings.com/2012/04/17/arcgis-image-services-and-leaflet/
fuente
He creado una extensión de objeto de servidor para generar GeoJSON desde los servicios de mapas de ArcGIS Server. Ha sido probado con 10.1 y 10.2 pero no antes. https://github.com/geobabbler/AGSOpenFormats
fuente
Para una conversión de una sola vez, hubiera utilizado la respuesta aceptada de @Sasa Ivetic pero necesitaba algo en tiempo real, y Terraformer trabajó decentemente para eso. Desafortunadamente, solo es para funciones únicas de forma predeterminada, por lo que para múltiples funciones debe recorrer la matriz y agregar una ID a cada función:
Esto funcionó bien para mí, excepto en polígonos de varias partes (es decir, Alaska y sus islas), pero soy nuevo en esto, ¡así que es posible que haya codificado algo incorrectamente!
fuente
Convertir ArcGIS JSON a GeoJSONThere en puro navegador
hay 2 formas de hacerlo
1) TERRAFORMADOR
Nota: el uso en node.js y el uso en el navegador son diferentes , ver detalles en el enlace
2) Esri / arcgis-to-geojson-utils
uso en el navegador, ArcgisToGeojsonUtils es una referencia global var el punto de entrada de este módulo
});
Sin embargo, si desea agruparlo solo, solo para aprender, siga los pasos
a) Necesita compilar todo el archivo fuente del módulo en un solo paquete.js
rollup.js instalar por
luego vaya a su carpeta raíz js lib, busque el archivo js del punto de entrada, en este caso es index.js
Debería encontrar un nuevo archivo bundle.js en su directorio raíz.
Ahora en el archivo html de su navegador, incluya este archivo bundle.js
Puedes usarlo ahora por
Recuerda que esri_arcgis_to_geojson es el nombre que llamaste lib
Este se convierte en el nombre de la variable global, disponible en el navegador.
El truco es que el proceso de paquete agrega una función de implementación instantánea como (function xx {}) aquí está la parte superior de bundle.js
arcgis-to-geojson-utils
fuente
Por lo general, es * una conversión bastante fácil.
Hice un script https://github.com/calvinmetcalf/esri2geo y hay otros que también funcionan bien.
* La excepción son los polígonos de varias partes con agujeros que no convierten 1 a 1 sin un poco de geoprocesamiento.
fuente
Si es una consulta única y no tiene más de 1000 características, intente pegar esto en qgis utilizando la capa de agregar vector: elija el protocolo y reemplace esta URL de resto de arcgis con la suya: http://geodata.epa.gov/arcgis / rest / services / OAR / USEPA_NEI_2005 / MapServer / 1 / query? where = objectid +% 3D + objectid & outfields = * & f = json ... Esto supone que tiene instalado gdal 1.10
fuente
Quizás aún más fácil puede usar la biblioteca de Esri-leaflet para agregarlo de forma nativa como una capa en Leaflet.
fuente
Si todo lo que necesita es devolver el servicio ArcServer como GeoJSON para usar en la tecnología de mapeo que desee, le recomiendo que mire este diálogo de problema de GitHub .
No voy a replicar el diálogo aquí porque eso perdería tiempo. Sus opciones están claramente establecidas directamente desde Esri.
fuente
API de resto de servidores de ArcGIS, servicio de funciones,
si consulta la capa, con una URL como esta, ... / FeatureServer / query? layerDefs = ...
No puede establecer el formato geojson, f = pgeojson será una mala solicitud, f = json, porque el material de retorno no es una característica, las capas json fueron devueltas.
Pruebe esta página de consulta html, puede ver, no hay opción de geojson,
Si desea devolver geojson (característica), debe usar esta URL ... / FeatureServer / 0 / query ...
/ 0 / significa layerID, si on solo tiene 1 capa, entonces layerID = 0 .....
Pruebe esta página de consulta html, puede ver, geojson es una opción, porque es una capa específica de consulta con layerID = 0
Nota: recuerde establecer esos 2 parámetros: outSR = 4326 & f = geojson en el ID de referencia espacial de URL, srid = 4326, porque todos los mapas web usan esto, f significa formato, tanto f = pgeojson como f = geojson funciona. Si no establece SR = 4326, la API de resto del servidor arcgis por defecto NO usará 4326, en su lugar usará otra cosa, solo 4326 tiene un grado de unidad, que se usa en la mayoría de los mapas web. Otro formato no funcionaría con los mapas web.
Por cierto, para aquellos que quieran usar la API de rest del servidor arcgis con el servicio de mosaico,
tiletream y otros
/zoom(z)/x/y.png
servicio de mosaico del servidor arcgis: no png, x e y en orden diferente
http://services3.arcgis.com/your_token/ArcGIS/rest/services/Parcels/MapServer/tile/12/1641/706
fuente