4 votos

¿Cuál es la forma más fácil de detectar el tipo de geometría del texto en PostGIS?

Tengo algunos registros con diferentes tipos de " geometrías (poli,línea de puntos)' almacena como una cadena de texto. Estoy tratando de utilizar ST_GeomFromText como quiero hacer algunas intersección con ellos. ¿Cuál es la manera más fácil de detectar si debo poner ST_GeomFromText(Polígono o LineString o Multipolígono o Punto en el SQL además de la división de la cadena y contando el coords par?

Datos de ejemplo:

71.1776585052917 42.3902909739571 

-71.1776585052917 42.3902909739571,-71.1776820268866 42.3903701743239,
-71.1776063012595 42.3903825660754,-71.1775826583081 42.3903033653531,-71.1776585052917 42.3902909739571

-71.1776585052917 42.3902909739571,-71.1776820268866 42.3903701743239,
-71.1776063012595 42.3903825660754,-71.1775826583081 42.3903033653531

Así, la primera debe ser de punto, el segundo un polígono, el tercero es un linestring. Pero la programación no sé cómo diferenciarlos, a menos que me separé de la cadena de cuenta de ellos y si es de 1 par es un punto, etc...

8voto

MikeJ Puntos 6577

Creo que ST_GeometryType es lo que estás buscando. Ejemplo de lo que se obtiene al consultar una geometría de punto:

 SELECT ST_GeometryType(geom) FROM table WHERE column=value;
 st_geometrytype 
-----------------
 ST_Point
(1 row)
 

http://postgis.refractions.net/docs/ST_GeometryType.html

3voto

Michael Barker Puntos 8234

Del texto de ejemplo:

Dividir cadena con, Entonces, si la longitud de la matriz devuelta es 1, entonces es punto, si es más que su línea si el último par de coordenadas no es el mismo que el primero.

OGC Polygon tiene el mismo punto en su primer y último miembro.

Después de eso, debes verificar las cadenas lineales y el polígono con la función IsValid ()

0voto

texai Puntos 178

puedes probar esto

 SELECT ST_GeometryType(ST_SetSRID(ST_MakePoint(latitude, longitude), 4326))
        FROM myTable;
 

La latitud y la longitud son tus columnas x, y.

Espero que te ayude..

0voto

NilObject Puntos 7874

Solo divide el texto y cuenta las coordenadas, no hay razón para no hacerlo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X