6 votos

¿PostGIS: es el operador <-> obras de geografía también?

Con los recientes postgres//postgis versión, ahora se puede utilizar el operador <-> para encontrar más cercano filas a un punto :

Indizada Vecino más Cercano de Búsqueda en PostGIS

Corrígeme si me equivoco, pero según mis pruebas :

SELECT name, gid
FROM geonames
ORDER BY geom <-> st_setsrid(st_makepoint(-90,40),4326)
LIMIT 10;

es la misma precisión y un poco más lento, como si yo uso el Postgres tipo de Punto. Ahora me gustaría utilizar este nuevo operador con la Geografía de tipo para hacer un mejor cálculo en un esferoide.

Es posible ?

6voto

NilObject Puntos 7874

No, el operador de <> – no se define en geografía. Puede utilizar el operador de geometría y un elenco a la geografía en los resultantes

ST_Distance(geom::geography, ST_GeogFromText(''))

para obtener las distancias finales, pero potencialmente si los objetos están sobre los postes o fecha o en el extremo norte la inicial orden de geometría de <> – no será correcto para que las cosas no funcionan perfectamente.

3voto

Erik Öjebo Puntos 6937

Puede utilizar ST_DWithin con geografía en PostGIS

--Find the nearest hospital to each school
--that is within 3000 units of the school.
-- We do an ST_DWithin search to utilize indexes to limit our search list
-- that the non-indexable ST_Distance needs to process
--If the units of the spatial reference is meters then units would be meters
SELECT DISTINCT ON (s.gid) s.gid, s.school_name, s.the_geom, h.hospital_name
    FROM schools s
        LEFT JOIN hospitals h ON ST_DWithin(s.the_geom, h.the_geom, 3000)
    ORDER BY s.gid, ST_Distance(s.the_geom, h.the_geom);

--The schools with no close hospitals
--Find all schools with no hospital within 3000 units
--away from the school.  Units is in units of spatial ref (e.g. meters, feet, degrees)
SELECT s.gid, s.school_name
    FROM schools s
        LEFT JOIN hospitals h ON ST_DWithin(s.the_geom, h.the_geom, 3000)
    WHERE h.gid IS NULL;

http://PostGIS.net/docs/ST_DWithin.html

2voto

Steven Parkes Puntos 625

Puede encontrar más información sobre los operadores lógicos de postgis en otra pregunta:

Aclaración de operadores lógicos en una base de datos PostGIS

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