Cuando se escribe WKB como un valor (y como un parámetro binario) en una columna de geografía, el valor persistido no es geografía.
El ejemplo de Java también está disponible aquí: https://github.com/ayuudee/issue-pad/blob/master/src/com/jesusthecat/im/pggeog/BinaryGeogTest.java
Esto es lo que hace:
- Crea una tabla con un ID y Geografía (Punto, 4326)
- Inserta una fila usando WKT.
- Inserta una fila usando WKB (como bytes).
- Imprime el id, punto y ST_SUMMARY(punto).
El resultado SQL del paso #4 es:
id | pt | st_summary
----+----------------------------------------------------+------------
1 | 0101000020E610000009C6C1A5E3E662406BB75D68AEED40C0 | Point[GS]
2 | 0101000020E610000009C6C1A5E3E662406BB75D68AEED40C0 | Point[S]
Ejemplo de registro de la inserción binaria (donde pt es Geografía (Punto, 4326))
LOG: execute : insert into px(pt) values($1)
DETALLE: parámetros: $1 = '\x0101000020e610000009c6c1a5e3e662406bb75d68aeed40c0'
Notarás que:
- El WKB tanto para #1 como para #2 son iguales; y
- Las banderas en el resultado de ST_Summary para #1 son [GS], mientras que para #2 (el binario) son [S].
La documentación de ST_Summary indicaría que #2 tiene información espacial, pero no es geodésico (es decir, no es geografía).
Estoy escribiendo una biblioteca en Java que busca persistir la geografía como binario, pero esto parecería indicar que no es posible. Además, ¿es normal que esto deba permitirse de todos modos (es decir, escribir un valor en una columna de geografía que no es geografía)?
Versiones:
POSTGIS="2.1.3 r12547" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.7.1, 23 September 2009" GDAL="GDAL 1.9.0, released 2011/12/29" LIBXML="2.7.8" LIBJSON="UNKNOWN" TOPOLOGY RASTER
POSTGRES PostgreSQL 9.3.5 en x86_64-unknown-linux-gnu, compilado por gcc (Ubuntu/Linaro? 4.6.3-1ubuntu5) 4.6.3, 64 bits
2 votos
En nuestra lista para arreglar. trac.osgeo.org/postgis/ticket/2870
0 votos
En caso de que ayude a alguien más, aunque esto no sea una respuesta, al final pude resolver el problema usando WKT (transferido como una cadena), que es interpretado correctamente como geografía en su forma canónica. Obviamente hay funciones para construir geografía de forma más fiable a partir de una forma textual, pero en mi caso particular, eso no era posible.