Responsive Image
Blogs

Servicio OGC API de procesos: Proceso coordinatesTransformGML

El proceso OGC API coordinatesTransformGML permite transformar las coordenadas contenidas en un fichero GML (proporcionado mediante una URL o como texto) de un sistema de referencia a otro, siguiendo la especificación del OGC Web Coordinate Transformation Service (WCTS). Este proceso admite la utilización de cualquier datum. Se puede acceder a través de la página de API processes coordinatesTransformGML, donde se detallan los parámetros de entrada y salida.

Datos de entrada:

  • «url»: corresponde a la URL del fichero GML. Una manera sencilla de obtener una URL de un GML válido es a partir de una petición WFS a un servicio, pero se puede usar cualquier URL que nos devuelva un GML. Para transformar las coordenadas hay que proporcionar o este dato de entrada o «text». Tipo de dato: string.
  • «text»: es el contenido del fichero GML en formato texto. En el texto deben estar codificados los caracteres especiales para evitar errores durante la compilación. Tipo de dato: string.
  • «source»: es el Sistema de Referencia Coordenadas (SRC) de la geometría de entrada. Valor por defecto 4230 (ED50). Para la transformación entre ED50 y ETRS89 se usarán las rejillas PENR2009.gsb y BALR2009.gsb. Tipo de dato: integer. Es un parámetro obligatorio.
  • «target»: es el Sistema de Referencia de Coordenadas de la geometría de salida. Valor por defecto 4258 (ETRS89). Para la transformación entre ED50 y ETRS89 se usarán las rejillas PENR2009.gsb y BALR2009.gsb. Tipo de dato: integer. Es un parámetro obligatorio.

Datos de salida:

  • «outformat»: es un fichero GML con las geometrías transformadas al sistema de referencia indicado. Las coordenadas UTM se darán en metros mientras que las geográficas serán en grados sexagesimales. Si éstas se encuentran en las longitudes oeste y latitudes sur se mostrarán con un signo negativo.

Ejecución del proceso:

Para la ejecución del proceso se utiliza una función POST. Se accede a la dirección: https://api-processes.idee.es/processes/coordinatesTransformGML y es obligatorio ejecutar la petición en JSON.

Ventana de ejecución de Swagger del proceso coordinatesTransformGML

Ventana de ejecución de Swagger del proceso coordinatesTransformGML

Una opción para verificar los API de procesos es utilizar Swagger UI que ofrece la misma interfaz de processes. Desde aquí podemos acceder al proceso coordinatesTransformGML de una manera sencilla (Figura 1). Este proceso permite verificar el proceso para la transformación de coordenadas. Otra forma más experta de explotar lo servicios es a través del comando cURL o de una biblioteca de Python llamada requests, como se detalla en los siguientes ejemplos.

Las peticiones se pueden realizar a través del parámetro «url» o «text». Veamos varios ejemplos de consulta:

Ejemplo 1. Petición de transformación de coordenadas a través del parámetro «url» al servicio WFS de Unidades Administrativas

Para este ejemplo, vamos a realizar una consulta a un único objeto geográfico de la capa unidades administrativas del servicio WFS de Unidades Administrativas del Instituto Geográfico Nacional (IGN), correspondiente a las Islas Canarias. El objetivo es transformar este objeto del Sistema de Referencia ETRS89 en coordenadas geográficas (EPSG:4258) al Sistema de Referencia Oficial de Canarias REGCAN95 UTM Huso 28N (EPSG:4083).

Para llevarlo a cabo se emplea la API de procesos de transformación de coordenadas, aplicándola sobre un fichero GML en el SRC (EPSG:4258) y convirtiéndolo al SRC (EPSG:4083) de la capa «au:AdministrativeUnit». Como parámetros de entrada se utiliza «url» y se limita la consulta a un único objeto geográfico (count=1). La operación se ejecuta de la siguiente forma:

{
"inputs": {
"source": 4258,
"target": 4083,
"url": "https://www.ign.es/wfs-inspire/unidades-administrativas?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&typename=au:AdministrativeUnit&count=1&outputFormat=application%2Fgml%2Bxml%3B%20version%3D3.2"
}
}

La misma petición con el método cURL:

curl -X POST "https://api-processes.idee.es/processes/coordinatesTransformGML/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"source\":4258,\"target\":4083,\"url\":\"https://www.ign.es/wfs-inspire/unidades-administrativas?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&typename=au:AdministrativeUnit&count=1&outputFormat=application%2Fgml%2Bxml%3B%20version%3D3.2\"}}"

Ejemplo de petición desde script Python

En el siguiente ejemplo se muestra cómo realizar la misma petición HTTP POST al servicio publicado en una OGC API processes desde un script de Python. Para ello, se utiliza la librería requests, cuya importación se realiza en la primera línea. Posteriormente se definen las variables «url» (texto con la URL a la que se va a realizar la petición) y «myObj» (json con los parámetros de entrada de la función a ejecutar). Por último, se realiza la petición y se guarda en el parámetro «result».

Dentro de la variable tenemos distintos métodos, entre los que destacan:

  • «request» para obtener los datos de la petición
  • «.json()» para obtener el resultado de la operación ejecutada en formato json
  • «.status_code» para obtener el estado de la petición HTTP.
import requests

# URL del proceso en el processes
url = 'https://api-processes.idee.es/processes/unitConversion/execution'

myObj = {
"inputs": {
"source": 4258,
"target": 4083,
"url": " https://www.ign.es/wfs-inspire/unidades-administrativas?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&typename=au:AdministrativeUnit&count=1&outputFormat=application%2Fgml%2Bxml%3B%20version%3D3.2"}
}

result = requests.post(url, json = myObj)

print('resultado de la petición: ',result.request)
print('resultado del proceso: ',result.json())
print('estado de la petición: ',result.status_code)

Este script de Python se puede utilizar para otros ejemplos, modificando el objeto myObj con el JSON indicado en cada caso.

Resultado ejemplo 1

El resultado de la ejecución de esta petición al proceso API es un fichero GML con las geometrías transformadas al SRC indicado. A continuación, se muestra el resultado de un objeto geográfico de la capa de Unidades Administrativas transformado al Sistema de Referencia de Coordenadas REGCAN UTM 28N (EPSG:4083).

<ogr:nombre_prov>Territorios no asociados a ninguna <ogr:FeatureCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogr="http://ogr.maptools.org/" xmlns:gml="http://www.opengis.net/gml/3.2" gml:id="aFeatureCollection" xsi:schemaLocation="http://ogr.maptools.org/ transform.xsd">
<gml:boundedBy>

<gml:Envelope srsName="EPSG:4083">
<gml:lowerCorner>3060637.58366875 188291.385619932</gml:lowerCorner>
<gml:upperCorner>3255056.04301694 661752.03552055</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<ogr:featureMember>
<ogr:AdministrativeUnit gml:id="AU_ADMINISTRATIVEUNIT_34050000000">
<ogr:geometryProperty>
<gml:MultiSurface gml:id="AdministrativeUnit.geom.0">
<gml:surfaceMember>
<gml:Polygon gml:id="AdministrativeUnit.geom.0.0">
<gml:exterior>
<gml:LinearRing>
<gml:posList>204219.962681746 3061548.94619631 204222.047516909 3061553.44333249 204225.882366536 3061556.78872705 204229.369876086 3061558.03504742 204231.908704749 3061552.76003148 204228.857280885 3061545.06964721 204223.810855534 3061540.64447279 204219.768734062 3061540.96453587 204218.627196933 3061542.7670239 204219.962681746 3061548.94619631</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>

…/…/…

<gml:surfaceMember>
<gml:Polygon gml:id="AdministrativeUnit.geom.0.1073">
<gml:exterior>
<gml:LinearRing>
<gml:posList>645043.388576959 3255033.35032294 645032.020542068 3255049.60835746 645049.793442497 3255056.04301694 645063.035617149 3255052.55519227 645069.909316377 3255038.67795823 645069.514722639 3255024.04251801 645061.92609985 3255010.42320543 645051.107068673 3255021.70063221 645043.388576959 3255033.35032294</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</ogr:geometryProperty>
<ogr:nationalCode>34050000000</ogr:nationalCode>
<ogr:localId>34050000000</ogr:localId>
<ogr:namespace>ES.IGN.BDDAE</ogr:namespace>
<ogr:LocalisedCharacterString>Comunidad autónoma</ogr:LocalisedCharacterString>
<ogr:language xsi:nil="true"/>
<ogr:sourceOfName xsi:nil="true"/>
<ogr:pronunciation xsi:nil="true"/>
<ogr:text>Canarias</ogr:text>
<ogr:script xsi:nil="true"/>
<ogr:transliterationScheme xsi:nil="true"/>
<ogr:residenceOfAuthority xsi:nil="true"/>
<ogr:beginLifespanVersion xsi:nil="true"/>
<ogr:endLifespanVersion xsi:nil="true"/>
<ogr:condominium xsi:nil="true"/>
<ogr:administeredBy xsi:nil="true"/>
<ogr:coAdminister xsi:nil="true"/>
</ogr:AdministrativeUnit>
</ogr:featureMember>
</ogr:FeatureCollection>

Asimismo, este fichero de salida GML puede integrarse en un SIG y visualizarse en el SRC transformado que hemos indicado REGCAN UTM 28N (EPSG: 4083) (Figura 2).

Objetos geográficos de la capa de unidades administrativas

Visualización de los objetos geográficos de la capa de unidades administrativas del servicio WFS de Unidades Administrativas transformados al SRC EPSG:4083

Ejemplo 2. Petición de transformación de coordenadas a través del parámetro «url» al servicio WFS de Red de Transportes

En este segundo ejemplo, se realiza una petición al servicio WFS de la Red de transportes del Sistema Cartográfico Nacional (SCNE), a la capa área portuaria «PortArea» desde el SRC ETRS89 en coordenadas geográficas (EPSG: 4258) al SRC ETRS89-Huso 30N en coordenadas proyectadas UTM (EPSG: 25830), limitada a dos objetos geográficos (count=2).

{
"inputs": {
"source": 4258,
"target": 25830,
"url": "https://servicios.idee.es/wfs-inspire/transportes?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&typename=tn-w:PortArea&count=2"
}
}

La misma petición con el método cURL:

curl -X POST "https://api-processes.idee.es/processes/coordinatesTransformGML/execution" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"inputs\":{\"source\":4258,\"target\":25830,\"url\":\"https://servicios.idee.es/wfs-inspire/transportes?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&typename=tn-w:PortArea&count=2\"}}"

Resultado ejemplo 2

<ogr:FeatureCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogr="http://ogr.maptools.org/"
xmlns:gml="http://www.opengis.net/gml/3.2" gml:id="aFeatureCollection" xsi:schemaLocation="http://ogr.maptools.org/ transform.xsd">
<gml:boundedBy>
<gml:Envelope srsName="EPSG:25830">
<gml:lowerCorner>4797027.32472443 581720.614640039</gml:lowerCorner>
<gml:upperCorner>4804728.33202559 598173.848864958</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<ogr:featureMember>
<ogr:PortArea gml:id="TN-W_PORTAREA_PUERT_A200690000012">
<ogr:geometryProperty>
<gml:Polygon gml:id="PortArea.geom.0">
<gml:exterior>
<gml:LinearRing>
<gml:posList>581914.998335124 4797112.86218198 581913.775391825 4797113.4027449 581913.205132904 4797113.61798913 581912.63487402 4797113.8332334 581912.064615174 4797114.04847773 581911.494356364 4797114.2637221 581910.110593925 4797114.69126809 581909.702498518 4797114.90847454 581909.213321499 4797115.12470006 581908.237654696 4797115.33503996 581906.609304261 4797115.87069947 581904.490433829
/…/…/
4797062.12880772 582035.846643908 4797064.45412914 582030.308829891 4797066.38632523 582015.633307573 4797072.87284714 582002.772557155 4797076.82672653 581993.177968935 4797078.93196191 581975.921333468 4797084.27659104 581957.856595433 4797089.38933725 581945.385192047 4797094.68089992 581920.063911428 4797103.03807571 581913.849293094 4797107.2946857 581914.998335124 4797112.86218198</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</ogr:geometryProperty>
<ogr:beginLifespanVersion>2024/07/01 00:00:00</ogr:beginLifespanVersion>
<ogr:localId>PUERT_A200690000012</ogr:localId>
<ogr:namespace>ES.SCNE.IGR-RT</ogr:namespace>
<ogr:endLifespanVersion xsi:nil="true"/>
<ogr:inNetwork xsi:nil="true"/>
<ogr:language xsi:nil="true"/>
<ogr:nameStatus xsi:nil="true"/>
<ogr:sourceOfName xsi:nil="true"/>
<ogr:pronunciation xsi:nil="true"/>
<ogr:text>Puerto de San Sebastián/Donostiako Portua</ogr:text>
<ogr:script>Latn</ogr:script>
<ogr:validFrom xsi:nil="true"/>
<ogr:validTo xsi:nil="true"/>
</ogr:PortArea>
</ogr:featureMember>
<ogr:featureMember>
<ogr:PortArea gml:id="TN-W_PORTAREA_PUERT_A200360000013">
<ogr:geometryProperty>
<gml:Polygon gml:id="PortArea.geom.1">
<gml:exterior>
<gml:LinearRing>
<gml:posList>597757.214147857 4804323.55414332 597755.615078897 4804322.08695604 597754.963879767 4804322.29969336 597754.469855512 4804322.84794674 597753.275776383 4804321.38662071 597748.350001405 4804325.86964213 597741.252050433 4804318.10238294 597739.360169173 4804320.07445808 597742.942414522 4804324.45842929 597743.353832677 4804324.02006033 597746.218339955 4804327.61608471 597736.700447649 4804335.92048536 597729.677065896 4804328.59863914 597728.198214398
/…/…/
4804305.88893562 597999.997506698 4804302.52314073 597921.903731265 4804212.74836148 597777.223529765 4804334.8407101 597773.97557413 4804335.34910071 597770.675554222 4804333.85729017 597767.955377607 4804331.48522939 597766.216819311 4804328.46089354 597764.624182621 4804326.5494751 597762.302562306 4804324.62750696 597760.940060043 4804323.60806405 597757.214147857 4804323.55414332</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</ogr:geometryProperty>
<ogr:beginLifespanVersion>2024/07/01 00:00:00</ogr:beginLifespanVersion>
<ogr:localId>PUERT_A200360000013</ogr:localId>
<ogr:namespace>ES.SCNE.IGR-RT</ogr:namespace>
<ogr:endLifespanVersion xsi:nil="true"/>
<ogr:inNetwork xsi:nil="true"/>
<ogr:language xsi:nil="true"/>
<ogr:nameStatus xsi:nil="true"/>
<ogr:sourceOfName xsi:nil="true"/>
<ogr:pronunciation xsi:nil="true"/>
<ogr:text>Puerto Nuevo de Hondarribi/Hondarribiko Portu Berria</ogr:text>
<ogr:script>Latn</ogr:script>
<ogr:validFrom xsi:nil="true"/>
<ogr:validTo xsi:nil="true"/>
</ogr:PortArea>
</ogr:featureMember>
</ogr:FeatureCollection>

De la misma manera, podemos visualizar la capa de las áreas portuarias solicitadas en un SIG, limitado a dos objetos geográficos (count=2), en concreto el Puerto de San Sebastián (Figura 3) y el Puerto Nuevo de Hondarribia en el SRC transformado EPSG:25830.

Puerto de San Sebastián

Visualización del área portuaria del Puerto de San Sebastián/Donostiako Portua con SRC transformado de coordenada geográficas ETRS89 (EPSG: 4258) al SRC ETRS89 - UTM Huso 30N (EPSG: 25830) obtenido como resultado de la consulta realizada

Ejemplo 3. Petición de transformación de coordenadas a partir del parámetro «text»

En el siguiente ejemplo, realizaremos una solicitud a la capa de curso de agua «watercourse» del servicio WFS de la Red de Hidrografía del Sistema Cartográfico Nacional (SCN) para la transformación de coordenadas de ETRS89 UTM - Huso 30N (EPSG: 25830) a coordenadas geográficas ETRS89 (EPSG:4258), empleando como parámetro de entrada el texto del fichero GML («text») con codificación de cadenas de caracteres especiales JSON de un objeto geográfico (feature).

La definición de la geometría en formato GML es la siguiente:

<ogr:FeatureCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogr="http://ogr.maptools.org/" xmlns:gml="http://www.opengis.net/gml/3.2" gml:id="aFeatureCollection" xsi:schemaLocation="http://ogr.maptools.org/transform.xsd">
<gml:boundedBy>
<gml:Envelope srsName="EPSG:25830">
<gml:lowerCorner>4823665.88537255 300708.771195951</gml:lowerCorner>
<gml:upperCorner>4823935.38556054 300905.12372491</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<ogr:featureMember>
<ogr:Watercourse gml:id="HY-P_WATERCOURSE_ES018HYWCSL0000002627210">
<ogr:geometryProperty>
<gml:LineString gml:id="Watercourse.geom.0">
<gml:posList>300905.12372491 4823665.88537255 300894.488084 4823672.6480654 300884.057101083 4823675.40288291 300878.826677048 4823679.00397728 300871.178753315 4823688.34601013 300869.640121892 4823693.72740038 300873.057203422 4823718.970981 300876.263281782 4823742.55339162 300869.689920688 4823766.31461189 300857.449596893 4823787.13135457 300843.227479301 4823806.56179234 300823.635265416 4823822.14970736 300806.753887872 4823836.43449542 300800.756327306 4823860.51221462 300800.550186584 4823861.74111079 300799.789945414 4823866.09897784 300793.438498166 4823870.06689088 300772.291882896 4823879.58717714 300753.542637009 4823893.59404504 300708.771195951 4823935.38556054</gml:posList>
</gml:LineString>
</ogr:geometryProperty>
<ogr:geographicalName xsi:nil="true"/>
<ogr:classificationScheme>Nacional</ogr:classificationScheme>
<ogr:localId>ES018HYWCSL0983320014930</ogr:localId>
<ogr:namespace>ES.SCNE.IGR-HI</ogr:namespace>
<ogr:beginLifespanVersion>2019/04/28 00:00:00</ogr:beginLifespanVersion>
<ogr:endLifespanVersion xsi:nil="true"/>
<ogr:inspireId_Identifier_localId>ES018HYWCSL0000002627210</ogr:inspireId_Identifier_localId>
<ogr:inspireId_Identifier_namespace>ES.SCNE.IGR-HI</ogr:inspireId_Identifier_namespace>
<ogr:Integer>5</ogr:Integer>
<ogr:LocalisedCharacterString>Curso natural</ogr:LocalisedCharacterString>
<ogr:origin>natural</ogr:origin>
<ogr:tidal>false</ogr:tidal>
<ogr:bank xsi:nil="true"/>
<ogr:drainsBasin xsi:nil="true"/>
<ogr:neighbour xsi:nil="true"/>
<ogr:delineationKnown>true</ogr:delineationKnown>
<ogr:length>362.517</ogr:length>
<ogr:length_uom>m</ogr:length_uom>
<ogr:level xsi:nil="true"/>
<ogr:order>12</ogr:order>
<ogr:orderScheme>Pfaffstetter</ogr:orderScheme>
<ogr:scope>Nacional</ogr:scope>
<ogr:lower>1</ogr:lower>
<ogr:lower_uom>m</ogr:lower_uom>
<ogr:upper>5</ogr:upper>
<ogr:upper_uom>m</ogr:upper_uom>
</ogr:Watercourse>
</ogr:featureMember>
</ogr:FeatureCollection>

A continuación, se aplica al texto una codificación de los caracteres especiales para compatibilidad con JSON:

<ogr:FeatureCollection xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns:ogr=\"http:\/\/ogr.maptools.org\/\" xmlns:gml=\"http:\/\/www.opengis.net\/gml\/3.2\" gml:id=\"aFeatureCollection\" xsi:schemaLocation=\"http:\/\/ogr.maptools.org\/ transform.xsd\">\r\n <gml:boundedBy>\r\n <gml:Envelope srsName=\"EPSG:25830\">\r\n <gml:lowerCorner>4823665.88537255 300708.771195951<\/gml:lowerCorner>\r\n <gml:upperCorner>4823935.38556054 300905.12372491<\/gml:upperCorner>\r\n <\/gml:Envelope>\r\n <\/gml:boundedBy>\r\n <ogr:featureMember>\r\n <ogr:Watercourse gml:id=\"HY-P_WATERCOURSE_ES018HYWCSL0000002627210\">\r\n <ogr:geometryProperty>\r\n <gml:LineString gml:id=\"Watercourse.geom.0\">\r\n <gml:posList>300905.12372491 4823665.88537255 300894.488084 4823672.6480654 300884.057101083 4823675.40288291 300878.826677048 4823679.00397728 300871.178753315 4823688.34601013 300869.640121892 4823693.72740038 300873.057203422 4823718.970981 300876.263281782 4823742.55339162 300869.689920688 4823766.31461189 300857.449596893 4823787.13135457 300843.227479301 4823806.56179234 300823.635265416 4823822.14970736 300806.753887872 4823836.43449542 300800.756327306 4823860.51221462 300800.550186584 4823861.74111079 300799.789945414 4823866.09897784 300793.438498166 4823870.06689088 300772.291882896 4823879.58717714 300753.542637009 4823893.59404504 300708.771195951 4823935.38556054<\/gml:posList>\r\n <\/gml:LineString>\r\n <\/ogr:geometryProperty>\r\n <ogr:geographicalName xsi:nil=\"true\"\/>\r\n <ogr:classificationScheme>Nacional<\/ogr:classificationScheme>\r\n <ogr:localId>ES018HYWCSL0983320014930<\/ogr:localId>\r\n <ogr:namespace>ES.SCNE.IGR-HI<\/ogr:namespace>\r\n <ogr:beginLifespanVersion>2019\/04\/28 00:00:00<\/ogr:beginLifespanVersion>\r\n <ogr:endLifespanVersion xsi:nil=\"true\"\/>\r\n <ogr:inspireId_Identifier_localId>ES018HYWCSL0000002627210<\/ogr:inspireId_Identifier_localId>\r\n <ogr:inspireId_Identifier_namespace>ES.SCNE.IGR-HI<\/ogr:inspireId_Identifier_namespace>\r\n <ogr:Integer>5<\/ogr:Integer>\r\n <ogr:LocalisedCharacterString>Curso natural<\/ogr:LocalisedCharacterString>\r\n <ogr:origin>natural<\/ogr:origin>\r\n <ogr:tidal>false<\/ogr:tidal>\r\n <ogr:bank xsi:nil=\"true\"\/>\r\n <ogr:drainsBasin xsi:nil=\"true\"\/>\r\n <ogr:neighbour xsi:nil=\"true\"\/>\r\n <ogr:delineationKnown>true<\/ogr:delineationKnown>\r\n <ogr:length>362.517<\/ogr:length>\r\n <ogr:length_uom>m<\/ogr:length_uom>\r\n <ogr:level xsi:nil=\"true\"\/>\r\n <ogr:order>12<\/ogr:order>\r\n <ogr:orderScheme>Pfaffstetter<\/ogr:orderScheme>\r\n <ogr:scope>Nacional<\/ogr:scope>\r\n <ogr:lower>1<\/ogr:lower>\r\n <ogr:lower_uom>m<\/ogr:lower_uom>\r\n <ogr:upper>5<\/ogr:upper>\r\n <ogr:upper_uom>m<\/ogr:upper_uom>\r\n <\/ogr:Watercourse>\r\n <\/ogr:featureMember>\r\n<\/ogr:FeatureCollection>

Por último, se realiza la solicitud de transformación de coordenadas empleando en el parámetro «text», el texto del fichero con codificación de caracteres especiales JSON, donde se indican el Sistema de Referencia de Coordenadas origen ETRS89-Huso 30 (EPSG: 25830) y el Sistema de Referencia de Coordenadas destino WGS84/ Pseudo-Mercator (EPSG: 3857), a través de estas líneas de comando:

{
"inputs": {
"source": 25830,
"target": 3857,
"text": "<ogr:FeatureCollection xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns:ogr=\"http:\/\/ogr.maptools.org\/\" xmlns:gml=\"http:\/\/www.opengis.net\/gml\/3.2\" gml:id=\"aFeatureCollection\" xsi:schemaLocation=\"http:\/\/ogr.maptools.org\/ transform.xsd\">\r\n <gml:boundedBy>\r\n <gml:Envelope srsName=\"EPSG:25830\">\r\n <gml:lowerCorner>4823665.88537255 300708.771195951<\/gml:lowerCorner>\r\n <gml:upperCorner>4823935.38556054 300905.12372491<\/gml:upperCorner>\r\n <\/gml:Envelope>\r\n <\/gml:boundedBy>\r\n <ogr:featureMember>\r\n <ogr:Watercourse gml:id=\"HY-P_WATERCOURSE_ES018HYWCSL0000002627210\">\r\n <ogr:geometryProperty>\r\n <gml:LineString gml:id=\"Watercourse.geom.0\">\r\n <gml:posList>300905.12372491 4823665.88537255 300894.488084 4823672.6480654 300884.057101083 4823675.40288291 300878.826677048 4823679.00397728 300871.178753315 4823688.34601013 300869.640121892 4823693.72740038 300873.057203422 4823718.970981 300876.263281782 4823742.55339162 300869.689920688 4823766.31461189 300857.449596893 4823787.13135457 300843.227479301 4823806.56179234 300823.635265416 4823822.14970736 300806.753887872 4823836.43449542 300800.756327306 4823860.51221462 300800.550186584 4823861.74111079 300799.789945414 4823866.09897784 300793.438498166 4823870.06689088 300772.291882896 4823879.58717714 300753.542637009 4823893.59404504 300708.771195951 4823935.38556054<\/gml:posList>\r\n <\/gml:LineString>\r\n <\/ogr:geometryProperty>\r\n <ogr:geographicalName xsi:nil=\"true\"\/>\r\n <ogr:classificationScheme>Nacional<\/ogr:classificationScheme>\r\n <ogr:localId>ES018HYWCSL0983320014930<\/ogr:localId>\r\n <ogr:namespace>ES.SCNE.IGR-HI<\/ogr:namespace>\r\n <ogr:beginLifespanVersion>2019\/04\/28 00:00:00<\/ogr:beginLifespanVersion>\r\n <ogr:endLifespanVersion xsi:nil=\"true\"\/>\r\n <ogr:inspireId_Identifier_localId>ES018HYWCSL0000002627210<\/ogr:inspireId_Identifier_localId>\r\n <ogr:inspireId_Identifier_namespace>ES.SCNE.IGR-HI<\/ogr:inspireId_Identifier_namespace>\r\n <ogr:Integer>5<\/ogr:Integer>\r\n <ogr:LocalisedCharacterString>Curso natural<\/ogr:LocalisedCharacterString>\r\n <ogr:origin>natural<\/ogr:origin>\r\n <ogr:tidal>false<\/ogr:tidal>\r\n <ogr:bank xsi:nil=\"true\"\/>\r\n <ogr:drainsBasin xsi:nil=\"true\"\/>\r\n <ogr:neighbour xsi:nil=\"true\"\/>\r\n <ogr:delineationKnown>true<\/ogr:delineationKnown>\r\n <ogr:length>362.517<\/ogr:length>\r\n <ogr:length_uom>m<\/ogr:length_uom>\r\n <ogr:level xsi:nil=\"true\"\/>\r\n <ogr:order>12<\/ogr:order>\r\n <ogr:orderScheme>Pfaffstetter<\/ogr:orderScheme>\r\n <ogr:scope>Nacional<\/ogr:scope>\r\n <ogr:lower>1<\/ogr:lower>\r\n <ogr:lower_uom>m<\/ogr:lower_uom>\r\n <ogr:upper>5<\/ogr:upper>\r\n <ogr:upper_uom>m<\/ogr:upper_uom>\r\n <\/ogr:Watercourse>\r\n <\/ogr:featureMember>\r\n<\/ogr:FeatureCollection>"
}
}

Creando un fichero con la petición anterior en formato JSON y guardándolo con el nombre «watercourse.json» podemos hacer una petición con el método cURL de esta forma:

Con el método cURL:

curl -X POST "https://api-processes.idee.es/processes/coordinatesTransformGML/execution" -H "accept: application/json" -H "Content-Type: application/json" --data "@"watercourse.json"

Resultado ejemplo 3

Como resultado de la consulta al proceso API coordinatesTransformGML se obtiene un fichero GML transformado al Sistema de Referencia de Coordenadas proyectado WGS84/Pseudo-Mercator EPSG:3857.

<ogr:FeatureCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogr="http://ogr.maptools.org/" xmlns:gml="http://www.opengis.net/gml/3.2" gml:id="aFeatureCollection" xsi:schemaLocation="http://ogr.maptools.org/transform.xsd"> <gml:boundedBy>
<gml:Envelope srsName="EPSG:3857">
<gml:lowerCorner>-608559.611156816 5394435.76695159</gml:lowerCorner>
<gml:upperCorner>-608278.306803581 5394800.03052073</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<ogr:featureMember>
<ogr:Watercourse gml:id="HY-P_WATERCOURSE_ES018HYWCSL0000002627210">
<ogr:geometryProperty>
<gml:LineString srsName="EPSG:3857" gml:id="Watercourse.geom.0">
<gml:posList>-608278.306803581 5394435.76695159 -608293.223615348 5394444.67373136 -608307.695149151 5394448.0521673 -608315.042235542 5394452.81269277 -608325.95154564 5394465.40506225 -608328.289254948 5394472.77621331 -608324.61571175 5394507.78926096 -608321.164807536 5394540.49893828 -608331.183561708 5394573.05516377 -608348.883360744 5394601.31160323 -608369.254827558 5394627.57174111 -608396.862061275 5394648.30348153 -608420.684432306 5394667.34600992 -608429.92395004 5394700.36338987 -608430.257908514 5394702.05265434 -608431.482422913 5394708.0418672 -608440.387982176 5394713.26323543 -608469.887647236 5394725.54881933 -608496.270366554 5394744.13079595 -608559.611156816 5394800.03052073</gml:posList>
</gml:LineString>
</ogr:geometryProperty>
<ogr:geographicalName xsi:nil="true"/>

<ogr:classificationScheme>Nacional</ogr:classificationScheme>
<ogr:localId>ES018HYWCSL0983320014930</ogr:localId>
<ogr:namespace>ES.SCNE.IGR-HI</ogr:namespace>
<ogr:beginLifespanVersion>2019/04/28 00:00:00</ogr:beginLifespanVersion>
<ogr:endLifespanVersion xsi:nil="true"/>
<ogr:inspireId_Identifier_localId>ES018HYWCSL0000002627210</ogr:inspireId_Identifier_localId>
<ogr:inspireId_Identifier_namespace>ES.SCNE.IGR-HI</ogr:inspireId_Identifier_namespace>
<ogr:Integer>5</ogr:Integer>
<ogr:LocalisedCharacterString>Curso natural</ogr:LocalisedCharacterString>
<ogr:origin>natural</ogr:origin>
<ogr:tidal>false</ogr:tidal>
<ogr:bank xsi:nil="true"/>
<ogr:drainsBasin xsi:nil="true"/>
<ogr:neighbour xsi:nil="true"/>
<ogr:delineationKnown>true</ogr:delineationKnown>
<ogr:length>362.517</ogr:length>
<ogr:length_uom>m</ogr:length_uom>
<ogr:level xsi:nil="true"/>
<ogr:order>12</ogr:order>
<ogr:orderScheme>Pfaffstetter</ogr:orderScheme>
<ogr:scope>Nacional</ogr:scope>
<ogr:lower>1</ogr:lower>
<ogr:lower_uom>m</ogr:lower_uom>
<ogr:upper>5</ogr:upper>
<ogr:upper_uom>m</ogr:upper_uom>
</ogr:Watercourse>
</ogr:featureMember>
</ogr:FeatureCollection>

EL fichero GML puede integrarse en un SIG para visualizar la geometría de un objeto geográfico del curso de agua junto con su información asociada en el Sistema de Referencia de Coordenadas transformado EPSG:3857 (Figura 4).

Objeto geográfico de la capa del curso de agua del servicio WFS de Hidrografía

Visualización del objeto geográfico de la capa del curso de agua del servicio WFS de Hidrografía con las geometrías transformadas al Sistema de Referencia de Coordenadas EPSG:3857.

Este artículo forma parte de una serie, para saber más sobre API Processes de OGC y otros procesos del Servicio API del CNIG consulta el artículo índice.

Publicado por María José García Rodríguez.

Contacto
Calle General Ibáñez de Íbero 3
​​​​​​​Madrid 28003
Síguenos
Ministerio de Transportes y Movilidad sostenible

BLOG IDEE

Responsive Image
Responsive Image

BLOG IDEE

Responsive Image
Contacto
Calle General Ibáñez de Íbero 3
​​​​​​​Madrid 28003
Síguenos
Responsive Image