[Gvsig_usuarios] petición datos sigpac-json

Joaquin Jose del Cerro Murciano jjdelcerro en gvsig.org
Jue Abr 6 19:18:59 CEST 2017


El 6 de abril de 2017, 12:06, Juanjo Valero <geodesman en gmail.com> escribió:

> Gracias por la aclaración Francisco!!
>
> En lo del script está el asunto, superado el tema de la petición (aun
> pensando en como hacerla para todo un municipio o varias parcelas), es lo
> que ayer me llevo de cabeza y no conseguí solucionar.
> Tras varios intentos con webs conversoras o pasando esa info que me
> devuelve a un archivo de texto y guardándolo como json para pasarlo a shp
> es donde tuve el problema....No es tan trivial como eso.
>
> Después para ver la estructura hice el paso inverso; pase un shp a geojson
> para ver la estructura y es como dices.
>
> Mi confusión es porque me dice que las respuesta del servidor es un json
> si en realidad no se corresponde con la estructura de este para que lo
> pueda cargar directamente en un convsersor o en un GIS que reconocozca
> archivos json.....
>
>

Hola,
sin investigar mucho sobre SIGPAC ni geojson, se me ha ocurrido que no
debia ser muy complicado hacer algo en gvSIG para crear un shape a partir
de ese fichero json con los datos de SIGPAC.

Ha sido solo un ratito y no pretende ser una herramienta ni de lejos, pero
igual puede servir a quien lo necesite como punto de partida para
retorcarlo segun precise y acabar teniendo algo que le sirva.

He cogido el codigo json que aparecia en el correo de juanjo, lo he
guardado en un fichero, en mi caso en "/tmp/sigpac.json" y he creado un
pequeño script de python en gvSIG que lo exporta a un shape y lo carga como
una capa de gvSIG.

El script no es muy complicado, y supongo que se puede retorcar para
adaptarlo a las necesidades de cada uno.

#------------><------------------><--------------------
# encoding: utf-8

from gvsig import *
from gvsig.geom import *
from org.gvsig.fmap.geom import GeometryLocator

def main(*args):
  # Cargamos los datos
  f = open("/tmp/sigpac.json")
  x = f.read()
  f.close()

  null=None # El null de json es None en python.
  datos = eval(x.replace('"', '"""'))

  # Creamos la capa
  schema = createFeatureType()
  schema.append("provincia", "INTEGER")
  schema.append("municipio", "INTEGER")
  schema.append("agregado", "INTEGER")
  schema.append("zona", "INTEGER")
  schema.append("poligono", "INTEGER")
  schema.append("parcela", "INTEGER")
  schema.append("recinto", "INTEGER")
  schema.append("superficie", "DOUBLE")
  schema.append("pendiente_media", "DOUBLE")
  schema.append("coef_regadio", "DOUBLE")
  schema.append("admisibilidad", "STRING",100)
  schema.append("incidencias", "STRING",100)
  schema.append("uso_sigpac", "STRING", 10)
  schema.append("srid", "STRING", 20)
  schema.append("GEOMETRY", "GEOMETRY").setGeometryType(POLYGON, D2)
  shape = createShape(schema,prefixname="SIGPAC")
  print "Nombre: ", shape.getName(), "\tRuta: ",
shape.getDataStore().getFullName()

  # Nos recorremos los registros del json y los cargamos en el shape
  geometryManager = GeometryLocator.getGeometryManager()
  shape.edit()
  for registro in datos:
    nuevo_registro = dict()
    for k,v in registro.iteritems():
      if k == "wkt":
        nuevo_registro["GEOMETRY"] = geometryManager.createFrom(v)
      else:
        if v == None:
          v = "" # No podemos meter nulos en los DBFs/SHPs.
        # Ojo los nombres de campo del DBF estan cortados a 10 caracteres.
        # asi que aqui los recortamos antes de hacer el append.
        nuevo_registro[k[:10]] = v
    shape.append(nuevo_registro)
  shape.commit()
#------------><------------------><--------------------

Me he encontrado con dos problemas, que supongo seran mas de transcripcion
en el correo que de los datos; pero me han obligado a tocar los datos del
json antes de intentar cargarlos:

- En los nombres de campo de provincia y municipio habian comillas
  tipograficas en lugar de la comilla doble normal. Esto le daba
  dolores de cabeza a python, y las he tenido que cambiar por
  unas comillas dobles normales.
- En el campo pendiente_media falta una coma al final de linea, y
  se la he añadido.

Supongo que son errores que no se presentan siempre en los json que se
generan desde SIGPAC por que si no, no se podrian leer nunca.

Bueno, aqui os dejo el pedacito de codigo por si os sirve de algo, y si
teneis alguna duda podeis preguntar.


Ah, por cierto, una cosa es json y otra geojson.
El fichero de SIGPAC parece que es un json, pero no un geojson.

Un saludo
Joaquin




> Gracias!
>
> El 6 de abril de 2017, 11:46, Francisco Puga <fpuga en icarto.es> escribió:
>
>> Ese fichero efectivamente es un json, pero no es un geojson, por eso no
>> lo reconocen las aplicaciones. El geojson es un formato estándar aprobado
>> por el IETF. Para convertir ese fichero a geojson debería tener una pinta
>> parecida a:
>>
>> {
>> "type": "FeatureCollection",
>> "features": [
>>  {
>>    "type": "Feature",
>>    "geometry": {
>>      "type": "POLYGON",
>>      "coordinates": [
>>        [
>>        [1.53094151493186, 41.567392610212],
>>        [1.53093231076344, 41.5673946352799]
>>        ... RESTO DE COORDENADAS
>>        ]
>>      ]
>>    },
>>    "properties": {
>>      "provincia":8,
>>      "municipio":226,
>>      "agregado":0,
>>      "zona":0,
>>      "poligono":3,
>>      "parcela":52,
>>      "recinto":1,
>>      "superficie":0.3087,
>>      "pendiente_media":2.4
>>      "coef_regadio":0,
>>      "admisibilidad":null,
>>      "incidencias":null
>>    }
>>  }
>>  ]
>>  }
>>
>>  Como convertir eso a mano cada vez es un bastante farragoso tendrías que
>> hace un script que hiciera la conversión
>>
>> El 6 de abril de 2017, 10:58, Juanjo Valero <geodesman en gmail.com>
>> escribió:
>>
>>> Hola Eduardo,
>>>
>>> En SIGPAC me dijo en su dia como hacer las peticiones mediante el
>>> siguiente correo:
>>>
>>> ********************
>>>
>>> En respuesta a  su consulta,  recibida en este Organismo en fecha
>>> 30/11/2016,   se informa que el Sistema  de  Información Geográfica de
>>> Parcelas  Agrícolas  es una aplicación del Ministerio de Agricultura,
>>> Alimentación y Medio Ambiente
>>> <http://es.wikipedia.org/wiki/Ministerio_de_Agricultura,_Alimentaci%C3%B3n_y_Medio_Ambiente,Alimentaci%C3%B3nyMedioAmbiente> concebida
>>> para  facilitar a los agricultores la presentación de solicitudes (la
>>> PAC
>>> <http://es.wikipedia.org/wiki/Pol%C3%ADtica_agr%C3%ADcola_com%C3%BAn_de_la_Uni%C3%B3n_Europea%C3%ADticaagr%C3%ADcolacom%C3%BAndelaUni%C3%B3nEuropea>)
>>> con soporte gráfico, así como para facilitar los controles administrativos
>>> y sobre el terreno; permite identificar geográficamente las parcelas
>>> <http://es.wikipedia.org/w/index.php?title=Parcela&action=edit&redlink=1%28a%C3%BAnnoredactado%29> declaradas
>>> por los agricultores <http://es.wikipedia.org/wiki/Agricultores> y
>>> ganaderos <http://es.wikipedia.org/wiki/Ganader%C3%ADa%C3%ADa>, en
>>> cualquier régimen de ayudas relacionado con la superficie cultivada o
>>> aprovechada por el ganado en todo el territorio español*.  La
>>> información que muestra es única, de una fecha concreta (actual*), no
>>> siendo posible acceder on-line a información de campañas anteriores.
>>>
>>>
>>>
>>> Se indica asimismo que desde este Organismo no se puede distribuir la
>>> base de datos SIGPAC a particulares o empresas privadas, sino únicamente a
>>> entidades del sector público, o  empresas que realicen  algún trabajo de
>>> colaboración para  un Organismo  público, en cuyo caso la solicitud
>>> deberá  ser formulada por el Organismo en cuestión.
>>>
>>>
>>>
>>> No obstante, se señala que las Comunidades Autónomas son competentes
>>> para la distribución del SIGPAC en su territorio, por lo que se le
>>> recomienda que se ponga en contacto con las Consejerías competentes en
>>> materia de agricultura correspondientes.
>>>
>>>
>>>
>>> Puede obtener información relacionada con los recintos SigPac a través
>>> del Servicio de acceso público de Propiedades de Recinto del Visor SigPac.
>>>
>>>
>>>
>>> Dicho servicio, dados los códigos SigPac del recinto, se encarga de
>>> proporcionar las propiedades de dicho recinto establecidas en SigPac.
>>>
>>>
>>>
>>> Existen dos llamadas de tipo REST, que serán atendidas por este servicio:
>>>
>>>
>>>
>>> *1.- http://sigpac.mapama.es/fega/serviciosvisorsigpac/query/recinfo/[pr]/[mu]/[ag]/[zo]/[po]/[pa]/[re].gz
>>> <http://sigpac.mapama.es/fega/serviciosvisorsigpac/query/recinfo/%5bpr%5d/%5bmu%5d/%5bag%5d/%5bzo%5d/%5bpo%5d/%5bpa%5d/%5bre%5d.gz>(*información
>>> obtenida en formato binario)
>>>
>>>
>>>
>>> *2.-*[http://[mi.dominio.es]/%5bmiservicio%5d/query/recinfo/%5
>>> bpr%5d/%5bmu%5d/%5bag%5d/%5bzo%5d/%5bpo%5d/%5bpa%5d/%5bre%5d.json]*http://[mi.dominio.es
>>> <http://mi.dominio.es>]/[miservicio]/query/recinfo/[pr]/[mu]/[ag]/[zo]/[po]/[pa]/[re].json*
>>> * (* información en formato json)
>>>
>>>
>>>
>>>          donde:
>>>
>>>
>>>
>>> *               [pr]: *código de provincia
>>>
>>> *               [mu]: *código de municipio
>>>
>>> *                [ag]: *código de agregado
>>>
>>> *                [zo]: *código de zona
>>>
>>> *                [po]: *código de polígono
>>>
>>> *                [pa]: *código de parcela
>>>
>>> *                 [re]: *código de recinto
>>>
>>>
>>>
>>> Por ejemplo, con la llamada    http://sigpac.mapama.es/feg
>>> a/ServiciosVisorSigpac/query/recinfo/8/226/0/0/3/52/1.json
>>>
>>>
>>>
>>> La información que se obtendría es la siguiente:
>>>
>>>
>>>
>>> *      [*
>>>
>>> *          {*
>>>
>>> *                      “provincia":8,*
>>>
>>> *                   “municipio":226,*
>>>
>>> *                   "agregado":0,*
>>>
>>> *                   "zona":0,*
>>>
>>> *                   "poligono":3,*
>>>
>>> *                   "parcela":52,*
>>>
>>> *                   "recinto":1,*
>>>
>>> *                   "superficie":0.3087,*
>>>
>>> *                   "pendiente_media":2.4*
>>>
>>> *                   "coef_regadio":0,*
>>>
>>> *                   "admisibilidad":null,*
>>>
>>> *                   "incidencias":null,*
>>>
>>> *                   "uso_sigpac":"TA",*
>>>
>>> *                   "wkt":"POLYGON((1.53094151493186 41.567392610212, 1.53093231076344 41.5673946352799, 1.53031685272258*
>>>
>>> *                          41.5675300440955, 1.52978621116496 41.567627383981, 1.5298196298149 41.567740400541,*
>>>
>>> *                          1.52989142333442 41.5677638296381, 1.53024436182868 41.5678178786676, *
>>>
>>> *                          1.53074363662637 41.5677657189192, 1.53110407189528 41.5677240885183, *
>>>
>>> *                          1.53100273803265 41.5675258724221, 1.53096112355731 41.5674263750345, *
>>>
>>> *                          1.53094151493186 41.567392610212))",*
>>>
>>> *                   "srid":4258*
>>>
>>> *          }*
>>>
>>> *     ]*
>>>
>>>
>>>
>>>
>>>
>>> Esperamos que esta información pueda serle de ayuda.
>>>
>>>
>>>
>>> Un saludo,
>>>
>>>
>>> *************************
>>>
>>>
>>> Bien, ese ejemplo de respuesta es para una parcela. Aún no se hace la
>>> petición para todo un municipio por ejemplo o para unas parcelas en
>>> concreto.
>>>
>>>
>>> Por otro lado esa respuesta es un formato .json, pero tampoco he
>>> conseguido aun crear un archivo *.json o *.geojson para que un conversor lo
>>> cargue y pueda exportarlo a shapefile para cargarlo en gvSIG.
>>>
>>> En internet hay conversores, pero no me reconoce el archivo que he
>>> creado con esa info y he guardado como .json. Me da error al cargarlo......
>>>
>>>
>>> Cualquier ayuda es bienvenida.
>>>
>>>
>>> Gracias,
>>>
>>> Juanjo
>>>
>>> El 6 de abril de 2017, 8:57, Eduardo Méndez Pírez <
>>> EduardoMendezP en hotmail.com> escribió:
>>>
>>>> Yo también estoy interesado en descubrir la forma de descargar
>>>> geometrías de SIGPAC. Mientras que con el Catastro no hay problema, con el
>>>> SIGPAC no lo he logrado. Si alguien tiene alguna idea se lo agradecería.
>>>>
>>>> Saludos.
>>>>
>>>> Eduardo.
>>>>
>>>>
>>>> ------------------------------
>>>> *De:* gvsig_usuarios-bounces en listserv.gva.es <
>>>> gvsig_usuarios-bounces en listserv.gva.es> en nombre de Juanjo Valero <
>>>> geodesman en gmail.com>
>>>> *Enviado:* miércoles, 5 de abril de 2017 11:29
>>>> *Para:* Lista de Usuarios de gvSIG
>>>> *Asunto:* [Gvsig_usuarios] petición datos sigpac-json
>>>>
>>>> Hola a todos,
>>>>
>>>> No es una pregunta concreta sobre gvSIG pero quiza alguien sepa como
>>>> puedo solucionarlo.
>>>> he hecho una petición al SIGPAC de una parcela y sus datos asociados y
>>>> me devuelve la petición en forma de cadena de caracteres que supuestamente
>>>> es json.
>>>>
>>>> He intentado pasar ese json, aunque lleva asociado 'srid' y entiendo
>>>> que es geojson, a shp o kml en diversas webs online pero no me reconoce esa
>>>> cadena de caracteres como json/geojson.
>>>>
>>>> Gracias,
>>>> Juanjo
>>>>
>>>> _______________________________________________
>>>> gvSIG_usuarios mailing list
>>>> gvSIG_usuarios en listserv.gva.es
>>>>
>>>> Para ver histórico de mensajes, editar sus preferencias de usuario o
>>>> darse de baja en esta lista, acuda a la siguiente dirección:
>>>>
>>>> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>>>>
>>>>
>>>
>>> _______________________________________________
>>> gvSIG_usuarios mailing list
>>> gvSIG_usuarios en listserv.gva.es
>>>
>>> Para ver histórico de mensajes, editar sus preferencias de usuario o
>>> darse de baja en esta lista, acuda a la siguiente dirección:
>>>
>>> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>>>
>>>
>>
>>
>> --
>> Francisco Puga
>> iCarto | Innovación, Cooperación, Cartografía y Territorio S.L.
>> http://www.icarto.es/
>>
>> c/ Rafael Alberti nº 13 – 1º D
>> 15008 A Coruña
>> Galicia (Spain)
>> +34 881927808 <+34%20881%2092%2078%2008>
>>
>> Este correo electrónico contiene información estrictamente confidencial y
>> es de uso exclusivo del destinatario, quedando prohibida a cualquier otra
>> persona su revelación, copia, distribución, o el ejercicio de cualquier
>> acción relativa a su contenido. Si ha recibido este mensaje por error, por
>> favor conteste a su remitente mediante correo electrónico y proceda a
>> borrarlo de su sistema.
>>
>> Sus datos personales serán tratados de forma confidencial y no serán
>> cedidos a terceros ajenos a ICARTO. En cualquier caso, podrá ejercer los
>> derecho de oposición, acceso, rectificación y cancelación de acuerdo con lo
>> establecido en la Ley Orgánica 15/99, de 13 de diciembre, de Protección de
>> Datos de Carácter Personal dirigiéndose a Innovación, Cooperación,
>> Cartografía e Territorio, SL. (ICARTO) en la dirección postal a C/ Rafael
>> Alberti, nº 13, 1ºD, 15.008 – (A Coruña).
>>
>> _______________________________________________
>> gvSIG_usuarios mailing list
>> gvSIG_usuarios en listserv.gva.es
>>
>> Para ver histórico de mensajes, editar sus preferencias de usuario o
>> darse de baja en esta lista, acuda a la siguiente dirección:
>>
>> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>>
>>
>
> _______________________________________________
> gvSIG_usuarios mailing list
> gvSIG_usuarios en listserv.gva.es
>
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
>
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>
>


-- 
--------------------------------------
Joaquin Jose del Cerro Murciano
Development and software arquitecture manager at gvSIG Team
jjdelcerro en gvsig.com
jjdelcerro en gvsig.org
gvSIG Association
www.gvsig.com
www.gvsig.org
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20170406/2fed1f8c/attachment.html>


Más información sobre la lista de distribución gvSIG_usuarios