---
title: "¿Cómo obtener un GeoJSON de un FeatureServer de ArcGIS Server?"
canonical: "https://onesaitplatform-es.refined.site/space/DOC/2216692065/%C2%BFC%C3%B3mo%20obtener%20un%20GeoJSON%20de%20un%20FeatureServer%20de%20ArcGIS%20Server%3F"
format: markdown
---
> Macro (toc)

# Introducción

Puede darse el caso de que se necesite generar una ontología a partir de una capa espacial contenida en un ArcGIS Server. Para ello, hay que transformar el FeatureServer (la capa) a un formato GeoJSON, el cual se ingestará en la ontología.

# ArcGIS REST Services Directory

Cada ArcGIS Server viene con un Directorio de Servicios, que permite navegar por la lista de servicios, carpetas y operaciones en un servidor. En dicho directorio no sólo se encuentran las capas de datos vectoriales (FeatureServer), sino que también se pueden encontrar servicios de mapas (MapServices), geoprocesamientos (GPServer), datos ráster (ImageServer) o geocodificación de direcciones (GeocodeServer). De todos ellos, el servicio que nos va a interesar para este tutorial será el de **FeatureServer**.

Para poder obtener la información de uno de estos FeatureServer, es preciso conocer la estructura de un directorio de servicios de ArcGIS Server. Su endpoint sigue la siguiente estructura: **https://<host>/<site>/rest/services/<folder>/<serviceName>/<serviceType>**, donde:

- <span style="color: #595959">**https://<host>**</span><span style="color: #595959">: es el nombre del host del ArcGIS Server.</span>
- <span style="color: #595959">**/<site>**</span><span style="color: #595959">: es el nombre del sitio web. Por defecto el valor es </span><span style="color: #595959">*/arcgis/*</span><span style="color: #595959">.</span>
- <span style="color: #595959">**/rest/services**</span><span style="color: #595959">: indica el endpoint del servicio REST.</span>
- <span style="color: #595959">**/folder**</span><span style="color: #595959">: es la carpeta donde se encuentra la información de un servicio en concreto.</span>
- <span style="color: #595959">**/<serviceName>/<serviceType>**</span><span style="color: #595959">: representa el nombre del servicio que se invoca, y su tipo. Por ejemplo: </span><span style="color: #595959">*RestaurantesJaponeses/FeatureServer*</span><span style="color: #595959">.</span>

Como ejemplo, se usará el siguiente directorio de servicios: **[https://services.arcgis.com/hkQNLKNeDVYBjvFE/arcgis/rest/services/](https://services.arcgis.com/hkQNLKNeDVYBjvFE/arcgis/rest/services/)**

> ✅ ### Endpoint real
> ✅ 
> ✅ Trata de comparar la URL del directorio de servicios de ejemplo con la estructura del endpoint previamente definido. En este caso particual, el <site> sería hkQNLKNeDVYBjvFE/arcgis.


Accediendo a dicho endpoint, se abrirá una ventana con un listado de servicios, correspondiente al IDE (Infraestructura de Datos Espaciales) de La Palma.

![image](media://f535a340-e065-4398-be91-5e4f515ccc49)

Cada uno de los elementos del listado corresponde a lo que podríamos llamar una capa de datos vectoriales (ya que todos los que hay son de tipo FeatureServer). Supongamos que estamos interesados en los albergues de La Palma. Accederíamos pulsando sobre **Albergues (FeatureServer)**, lo que nos llevaría hasta otra ventana con la información puntual de dicho servicio:

![image](media://a327e569-c1a1-4be6-af48-abded205000d)

Esta ventana muestra el resumen de información del servicio, como puede ser su descripción, la extensión de visualización en el mapa, el sistema de referencia espacial en el que están definidos los datos (esto es muy importante a la hora de exportar los datos) o el número de capas presentes en el servicio. Aunque en el ejemplo sólo aparece una capa, la de albergues, en otros servicios puede haber más, como por ejemplo en el **[servicio de vehículos emergencias de Redlands, California](http://sampleserver6.arcgisonline.com/arcgis/rest/services/RedlandsEmergencyVehicles/FeatureServer)**. Por tanto, se seleccionará la capa del servicio que nos interesa, que en este caso es la de Albergues (el valor 0 hace referencia al identificador de la capa dentro del servicio).

![image](media://2946bbad-3698-4c1a-a512-e4f8f7047412)

Es posible ver la capa en un mapa desde ArcGIS Online. Para ello, se pulsará en la opción de **View In: ArcGIS.com Map**, lo que abrirá una nueva ventana en el navegador, con un mapa que tendrá la capa cargada y con la que se podrá interactuar (por ejemplo, pinchando en los iconos del mapa).

![image](media://307c1b16-c55d-49a2-8cfc-bdb31681ea9f)

---

# Generación del GeoJSON

Una vez que se tiene claro que esta es la capa que nos interesa exportar a formato GeoJSON, se procederá a realizar una consulta al servicio de la capa. Esto se hará desde la ventana de la capa Albergues, navegando hasta la parte inferior del todo, y seleccionando la opción de **Query**.

![image](media://bcc6d3b7-48d2-4b15-bd23-e688724c9814)

Esto abrirá un formulario en donde se tendrán que rellenar una serie de casillas para obtener el GeoJSON del servicio. Aunque la personalización de la consulta puede ser todo lo compleja que se desee, los parámetros principales a rellenar son los siguientes:

- **Where**: **1=1** --> para obtener todos los elementos de la capa.
- **Output Spatial Reference: 4326** --> el sistema de coordenadas que queremos para el GeoJSON. 4326 hace referencia a EPSG:4326, que es el sistema de coordenadas de **WGS84**, que hace uso de la longitud y latitud.
- **Format: GEOJSON** --> para que la salida de datos esté en formato GeoJSON estándar.


> ℹ️ **Acerca de los sistemas de coordenadas**
> ℹ️ 
> ℹ️ Por defecto, la capa tiene el sistema de coordenadas de 102100, código antiguo del **EPSG:3857**, conocido como [WGS84 Pseudo-Mercator -- Spherical Mercator](https://epsg.io/3857). Al servicio se le ha pedido que transforme la capa a **EPSG:4326**, conocido como [WGS84 - World Geodetic System 1984](https://epsg.io/4326). La diferencia existente entre ambos sistemas de coordenadas es que mientras el WGS84(4326) tienenunos límites comprendidos para la longitud entre los -180.0 y 180.0, y para la latitud entre los -90.0 y 90.0 (toda la esfera terrestre), Pseudo-Mercator (3857) tiene recortada la latitud entre -85.06 y 85.06.

Introducidas estas opciones, no hay más que ejecutar la consulta pulsando en Query (GET) para que se genere el GeoJSON de la capa:

##### **GeoJSON de respuesta**

```xml
{
  "type" : "FeatureCollection", 
  "crs" : 
  {
    "type" : "name", 
    "properties" : 
    {
      "name" : "EPSG:4326"
    }
  }, 
  "features" : [
    {
      "type" : "Feature", 
      "geometry" : 
      {
        "type" : "Point", 
        "coordinates" : [
          -17.9381656087823, 28.7018953788704
        ]
      }, 
      "properties" : {
        "Municipio" : "Tijarafe"
      }
    }, 
    {
      "type" : "Feature", 
      "geometry" : 
      {
        "type" : "Point", 
        "coordinates" : [
          -17.8665547061961, 28.5398949716646
        ]
      }, 
      "properties" : {
        "Municipio" : "Fuencaliente"
      }
    }, 
    {
      "type" : "Feature", 
      "geometry" : 
      {
        "type" : "Point", 
        "coordinates" : [
          -17.7445869375271, 28.7421381046795
        ]
      }, 
      "properties" : {
        "Municipio" : "Puntallana"
      }
    }, 
    {
      "type" : "Feature", 
      "geometry" : 
      {
        "type" : "Point", 
        "coordinates" : [
          -17.7846402612961, 28.7917152818693
        ]
      }, 
      "properties" : {
        "Municipio" : "San Andrés y Sauces"
      }
    }, 
    {
      "type" : "Feature", 
      "geometry" : 
      {
        "type" : "Point", 
        "coordinates" : [
          -17.7992146269749, 28.5598092585296
        ]
      }, 
      "properties" : {
        "Municipio" : "Villa de Mazo"
      }
    }, 
    {
      "type" : "Feature", 
      "geometry" : 
      {
        "type" : "Point", 
        "coordinates" : [
          -17.8772632151204, 28.8320525255706
        ]
      }, 
      "properties" : {
        "Municipio" : "Garafía"
      }
    }
  ]
}
```

Para poder automatizar este proceso, ya sea para ingestarlo mediante **FlowEngine** o similar, es interesante echar un ojo a la URL de la consulta del servicio:

##### **URL de la consulta**

```
https://services.arcgis.com/hkQNLKNeDVYBjvFE/ArcGIS/rest/services/Albergues/FeatureServer/0/query?where=1%3D1&objectIds=&time=&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&units=esriSRUnit_Meter&returnGeodetic=false&outFields=&returnGeometry=true&featureEncoding=esriDefault&multipatchOption=xyFootprint&maxAllowableOffset=&geometryPrecision=&outSR=4326&datumTransformation=&applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&returnQueryGeometry=false&returnDistinctValues=false&cacheHint=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&resultOffset=&resultRecordCount=&returnZ=false&returnM=false&returnExceededLimitFeatures=true&quantizationParameters=&sqlFormat=none&f=pgeojson&token=
```


Dicha URL se podría dividir en dos partes; una primera, que contiene el endpoint del servicio del FeatureServer ([https://services.arcgis.com/hkQNLKNeDVYBjvFE/ArcGIS/rest/services/Albergues/FeatureServer/0/](https://services.arcgis.com/hkQNLKNeDVYBjvFE/ArcGIS/rest/services/Albergues/FeatureServer/0/)), y una segunda parte con la llamada de la consulta, en donde se pueden identificar las propiedades antes introducidas:

- where=1%3D1
- outSR=4326
- f=pgeojson

Por tanto, reconstruyendo dicha consulta a un endpoint diferente, se podría conseguir automáticamente obtener los GeoJSON de diversos FeatureServer, necesitando conocer únicamente el nombre del servicio del FeatureServer que se quiere, y el ID de la capa.