miércoles, 10 de febrero de 2016

GML PARCELA CATASTRAL: COMO GENERAR UN FICHERO DE COORDENADAS GML (CON DOS PARCELAS o MÁS) VÁLIDO PARA CATASTRO.

GML PARCELA CATASTRAL: COMO GENERAR UN FICHERO DE COORDENADAS GML (CON DOS PARCELAS O MÁS) VÁLIDO PARA CATASTRO.


Hola de nuevo, hay gente que me está preguntando como generar un fichero GML con dos parcelas y lo voy a explicar en este nuevo post, aunque si no recuerdo mal, en su momento ya comenté que se podía hacer y era añadiendo el código de la primera parcela entre los dos primeros "featureMember" del código GML.


El proceso es el mismo que el que ya expliqué para una parcela, pero añadiendo los datos de la segunda en una parte concreta del mismo, es decir (otra vez) añadiendo el código de la primera parcela entre los dos primeros "featureMember" del código GML.


El resultado sería similar al de las imágenes adjuntas (es un ejemplo inventado donde he copiado dos parcelas con distintas coordenadas).





El código por ejemplo sería el siguiente (para el ejemplo de las imágenes anteriores):


Señalo en rojo el código de la primera parcela y en azul el código de la segunda parcela y dejo en negro el código base (a este código le he quitado algo de código al final (que no es necesario) para hacerlo más legible)


<?xml version="1.0" encoding="utf-8"?>
<!--Parcela Catastral de la D.G. del Catastro FV.-->
<!-- Geometria en formato GML codigo versionado por PEDRO E. FUSTER (GESPASUR)  http://gespasur.blogspot.com.es/-->
<gml:FeatureCollection gml:id="ES.SDGC.CP" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:cp="urn:x-inspire:specification:gmlas:CadastralParcels:3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:x-inspire:specification:gmlas:CadastralParcels:3.0 http://inspire.ec.europa.eu/schemas/cp/3.0/CadastralParcels.xsd">
<gml:featureMember>
<cp:CadastralParcel gml:id="ES.SDGC.CP.Parcela-65cx">
<gml:boundedBy>
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::25830">
  <gml:lowerCorner>0 0</gml:lowerCorner>
  <gml:upperCorner>0 0</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<cp:areaValue uom="m2">2714.39</cp:areaValue>
<cp:beginLifespanVersion>1900-01-11T00:00:00</cp:beginLifespanVersion>
<cp:endLifespanVersion xsi:nil="true" nilReason="other:unpopulated"></cp:endLifespanVersion>
<cp:geometry>
<gml:MultiSurface gml:id="MultiSurface_ES.SDGC.CP.0" srsName="urn:ogc:def:crs:EPSG::25830">
  <gml:surfaceMember>
  <gml:Surface gml:id="Surface_ES.SDGC.CP.0" srsName="urn:ogc:def:crs:EPSG::25830">
  <gml:patches>
  <gml:PolygonPatch>
  <gml:exterior>
      <gml:LinearRing>
        <gml:posList srsDimension="2">
628882.0434 4270631.2493
628878.8534 4270604.8863
628809.8994 4270557.7153
628805.7004 4270600.5173
628859.2844 4270626.8653
628882.0434 4270631.2493
</gml:posList>
      </gml:LinearRing>
  </gml:exterior>
  </gml:PolygonPatch>
  </gml:patches>
  </gml:Surface>
  </gml:surfaceMember>
</gml:MultiSurface>
</cp:geometry>
<cp:inspireId xmlns:base="urn:x-inspire:specification:gmlas:BaseTypes:3.2">
<base:Identifier>
  <base:localId>Parcela-65cx</base:localId>
  <base:namespace>ES.SDGC.CP</base:namespace>
</base:Identifier>
</cp:inspireId>
<cp:label>0</cp:label>
<cp:nationalCadastralReference>0</cp:nationalCadastralReference>
<cp:referencePoint>
<gml:Point gml:id="ReferencePoint_ES.SDGC.CP.0" srsName="urn:ogc:def:crs:EPSG::0">
  <gml:pos>0 0</gml:pos>
</gml:Point>
</cp:referencePoint>
<cp:validFrom xsi:nil="true" nilReason="other:unpopulated"></cp:validFrom>
<cp:validTo xsi:nil="true" nilReason="other:unpopulated"></cp:validTo>
<cp:zoning xlink:href="#ES.SDGC.CP.Z.0"></cp:zoning>
</cp:CadastralParcel>
</gml:featureMember>

<gml:featureMember>
<cp:CadastralParcel gml:id="ES.SDGC.CP.Parcela-61cx">
<gml:boundedBy>
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::25830">
  <gml:lowerCorner>0 0</gml:lowerCorner>
  <gml:upperCorner>0 0</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<cp:areaValue uom="m2">1716.53</cp:areaValue>
<cp:beginLifespanVersion>1900-01-11T00:00:00</cp:beginLifespanVersion>
<cp:endLifespanVersion xsi:nil="true" nilReason="other:unpopulated"></cp:endLifespanVersion>
<cp:geometry>
<gml:MultiSurface gml:id="MultiSurface_ES.SDGC.CP.0" srsName="urn:ogc:def:crs:EPSG::25830">
  <gml:surfaceMember>
  <gml:Surface gml:id="Surface_ES.SDGC.CP.0" srsName="urn:ogc:def:crs:EPSG::25830">
  <gml:patches>
  <gml:PolygonPatch>
  <gml:exterior>
      <gml:LinearRing>
        <gml:posList srsDimension="2">
628808.0300 4270550.9000
628804.9200 4270557.3000
628795.3700 4270577.0000
628790.0700 4270586.7400
628767.6800 4270627.8500
628770.3000 4270628.9100
628778.6300 4270632.2500
628782.0300 4270634.1900
628802.3600 4270645.7100
628808.6500 4270566.6700
628809.3800 4270557.4900
628808.0300 4270550.9000
</gml:posList>
      </gml:LinearRing>
  </gml:exterior>
  </gml:PolygonPatch>
  </gml:patches>
  </gml:Surface>
  </gml:surfaceMember>
</gml:MultiSurface>
</cp:geometry>
<cp:inspireId xmlns:base="urn:x-inspire:specification:gmlas:BaseTypes:3.2">
<base:Identifier>
  <base:localId>Parcela-61cx</base:localId>
  <base:namespace>ES.SDGC.CP</base:namespace>
</base:Identifier>
</cp:inspireId>
<cp:label>0</cp:label>
<cp:nationalCadastralReference>0</cp:nationalCadastralReference>
<cp:referencePoint>
<gml:Point gml:id="ReferencePoint_ES.SDGC.CP.0" srsName="urn:ogc:def:crs:EPSG::0">
  <gml:pos>0 0</gml:pos>
</gml:Point>
</cp:referencePoint>
<cp:validFrom xsi:nil="true" nilReason="other:unpopulated"></cp:validFrom>
<cp:validTo xsi:nil="true" nilReason="other:unpopulated"></cp:validTo>
<cp:zoning xlink:href="#ES.SDGC.CP.Z.0"></cp:zoning>
</cp:CadastralParcel>
</gml:featureMember>

</gml:FeatureCollection>


Como es de suponer se podrían añadir más parcelas copiando el código de una e insertándolo en su lugar correspondiente, cambiando las coordenadas y los metadatos (EPSG, Parcela y Superficie... incluso fechas, etc..).


Yo casi prefiero crear un código para una sola parcela con "mis Excel" pues lo veo más claro y fácil que andar insertando "a mano" parcelas en un mismo GML porque después del trabajo si falla .... ve tu a buscar el fallo (...ya dije que una coma, comilla, espacio, etc.. en lugar inadecuado hará que falle....). En fin, "para gustos los colores".


Supongo que en breve alguien hará alguna Scrips para QGIS, gvSIG, o similar que convierta un DXF (con muchas parcelas) en un GML válido para Catastro...


Espero os sea de utilidad.


Saludos cordiales.