2011-01-17 10 views
7

Estoy usando PostgreSQL con PostGIS. Todos mis datos tienen un latitud/longitud decimal adjunto (es decir, -87.34554 33.12321) pero para usar PostGIS necesito convertirlo a un cierto tipo de SRID. La mayoría de mis consultas buscan datos dentro de un radio determinado.¿Qué SRID debería usar para mi aplicación y cómo?

¿Qué SRID debería usar? Ya creé una columna de geometría con SRID 4269. En este ejemplo: link text el autor está convirtiendo SRID 4269 en SRID 32661. Estoy muy confundido acerca de cómo y cuándo usar estos SRID. Cualquier comentario sobre el tema sería realmente apreciado.

Respuesta

6

Siempre que nunca tenga la intención de reproyectar/transformar los datos a otro sistema de coordenadas, técnicamente no importa lo que use. Sin embargo, suponiendo que no desee desechar esos metadatos importantes, y desea transformarlos, querrá asegurarse de que su srid asignado coincida con los datos, por lo que postgis sabe qué hacer cuando llegue el momento.

Entonces, ¿por qué quieres reproyectar desde epsg: 4269? La respuesta es porque ciertos tipos de consultas (como la distancia) no tienen sentido en este mundo 'no proyectado'. Sus unidades están en grados decimales, y una medida recta de x grados decimales es una distancia real diferente dependiendo de en qué parte del planeta se encuentre.

En su ejemplo anterior, alguien está usando epsg:32661 ya que creen que les dará una mayor precisión para el que están trabajando. Si sus datos se encuentran en un área específica del mundo, puede seleccionar una proyección que sea precisa para esa área. Si se extiende por todo el mundo, debe elegir una proyección que 'acepte' sus necesidades.

Afortunadamente, PostGIS tiene algunas formas de facilitar todo esto. Para distancias aproximadas puedes usar la función st_distance_sphere que, como puedes suponer, supone que la Tierra es una esfera. O la más precisa st_distance_spheroid. Con estos, no necesita reproyectar y probablemente esté bien para sus consultas de distancia, excepto en casos límite. Las versiones más nuevas de PostGIS también le permiten usar geography columns

tl; dr - use st_distance_spheroid para sus consultas a distancia, almacene sus datos en columnas geográficas o transfórmalos a una proyección local (cuando los almacena, o sobre la marcha, dependiendo de su necesariamente).

+0

Abajo estoy votando por esto: "La respuesta es porque ciertos tipos de consultas (como la distancia) no tienen sentido en este mundo 'no proyectado'. Sus unidades están en grados decimales, y una medida recta de x grados decimales es una distancia real diferente dependiendo de en qué parte del planeta te encuentres ". En una palabra "no proyectada" hay una noción de distancia, aquí está para sphere: (http://en.wikipedia.org/wiki/Great-circle_distance) es un poco más difícil de calcular. En cuanto al cálculo de distancia en coordenadas de latitud y longitud, esto no es un problema en postgis. Http://postgis.net/docs/ST_Distance.html –

+0

Punto justo - Debería haber notado la distancia como en una simple diferencia de lof las coordenadas. Pero su comentario también es engañoso: el cálculo de distancia al que apunta es una forma de proyectar el lat/lng (en una esfera en este caso) para que pueda obtener una respuesta de distancia "razonable". Pero todavía está proyectando. Y mientras PostGIS puede hacer esto bajo la cubierta para usted con coords geográficos, st_distance producirá resultados confusos (por ejemplo, diferencia simple de coords) si está utilizando epsg: 4326 con columnas de geometría, por ejemplo. – jlivni

+0

No es engañoso, y no estoy diciendo que "lat/lon se proyecte en la esfera". Estoy diciendo que en una esfera hay una noción de distancia, y no es necesario proyectar una esfera para sentirla . lat/lon es simplemente un sistema de coordenadas para describir puntos en la esfera. No tienen nada que ver con las proyecciones, que son una forma de transformar el espacio N dimensional (esfera en nuestro caso) en otro espacio M dimensional (generalmente un plano 2 oscuro cartesiano), donde la noción de distancia es más intuitiva y clara. La proyección es el resultado de la transformación de un sistema de coordenadas a otro. –

1

Echa un vistazo a esta pregunta: How do you know what SRID to use for a shp file?

El SRID es sólo una manera de almacenar el texto conocido dentro de la base de datos (se habrán dado cuenta de que, Altough almacenar lat/puntos largos, el almacenamiento preferido es mucho cadena con número y letras mayúsculas).

El SRID o EPSG pueden ser diferentes para el país/estado/... aunque hay algunos muy comunes especialmente los 2 mencionados por usted. Si necesita información específica sobre qué área usa qué SRID, hay un database for handling that.

Dentro de su base de datos, tiene una tabla spatial_ref_sys que contiene la información sobre lo que sabe SRID PostGIS.

+0

Como me gusta decir "mejor confusión real que falsa claridad". De todos modos, mi confusión vino del hecho de que el ejemplo en esta página: http://unserializableone.blogspot.com/2007/02/using-postgis-to-find-points-of.html convirtió el 4269 en 32661 cada vez que hizo consulta. ¿Tiene esto que ver con el hecho de que al final podría tener algunos datos importantes que son 32661 por eso siempre lo convierte a ese sistema? De lo contrario, el 4269 estaría bien? – avatar

+0

@itgorilla Depende de la forma en que lo muestre. la mayoría de las veces, una biblioteca JS manejará la pantalla (como Google Maps, OSM, ...) y esta biblioteca necesita colocar las líneas, los puntos, ... en alguna parte y si los corrdinates subyacentes son necesarios en 4269, entonces necesita convertirlos respetuosamente. Aunque no soy un experto, quizás alguien tenga una mejor explicación para eso. – DrColossos

+0

Como puedes ver, estoy tratando de resolver esto por mi cuenta :) De todos modos, creo que cuanto más leo y pregunto, estoy empezando a tener una idea más clara de cómo funciona esto. Aprecio tu ayuda. – avatar

Cuestiones relacionadas