1 votos

Postgres st_intersection points/polygon

Estoy intentando utilizar la función ST_Intersection para intersecar puntos por condado y encontrar los recuentos por condado, pero no estoy teniendo suerte.

SELECT counties.name,  
FROM counties INNER JOIN routes 
ON ST_Intersects(counties.geom, routes.geog1)
group by counties.name;

El error me dice: la relación "condados" no existe.

¿Puede alguien ayudarme a resolver mi consulta? ¿Debería utilizar la función st_contains?

¡*Segundo día trabajando con posgres/postgis así que tened paciencia conmigo por favor!

1voto

Alex Puntos 1975

Para que quede claro, parece que quiere contar las rutas por condado. Supongo que routes es un (MULTI)LINESTRING y counties es un (MULTI)POLYGON . También ha indicado que ambas tablas utilizan el mismo SRID (4269).

El ERROR: relation "counties" does not exist es impar, pero usted dice en los comentarios que SELECT count(*), name FROM public."Counties" group by name; está funcionando. ¿Lo estás ejecutando? exactamente ¿en ese sentido? Porque si es así, parece que has definido la tabla utilizando un identificador entre comillas en mayúsculas para "Counties" , lo que hará que no coinciden con counties , "counties" o "COUNTIES" . En general, los desarrolladores de Postgres evitarán el uso de mayúsculas en los nombres de los identificadores precisamente por esta razón, para evitar tener que hacer coincidir exactamente las mayúsculas y minúsculas en los identificadores de doble comilla.

Suponiendo que ese sea el problema, deberías poder obtener el recuento que deseas utilizando:

SELECT counties.name, COUNT(*) AS route_count
FROM counties JOIN routes 
    ON ST_Intersects(counties.geom, routes.geog1)
GROUP BY counties.name;

El ST_Intersection() que tenía en su consulta original no es una función agregada y, por lo tanto, no puede utilizarse en la lista de selección si está utilizando GROUP BY . Si lo que se quiere es que las geometrías de las rutas intersectadas aparezcan en el conjunto de resultados, se trata de una consulta diferente.

¿Las rutas están completamente contenidas por los condados? Si alguna ruta cruza la frontera de un condado, se contabilizará en ambos condados intersectados. Pero cambiar a algo como ST_Contains no contarlos si cruzan al condado vecino. Elige tu veneno.

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