2010-07-04 3 views
2

Je viens de commencer à utiliser PostGIS & Postgresql et tout fonctionne correctement pour la plupart. Quand j'essaie de trouver quel MULTIPOLYGON est un POINT, je suis bloqué. J'ai deux points distincts dont je suis certain qu'ils se trouvent à l'intérieur d'une seule et unique forme de type de données MULTIPOLYGON dans ma base de données. Ce ne sont pas les mêmes points et ils sont dans différents formats. Exemple 1, je ne suis pas sûr de quel format il s'agit mais la requête renvoie la valeur vraie comme je l'espérais (notez, j'ai trouvé cette valeur en chargeant l'ensemble de données dans QGIS et planant sur un point à l'intérieur).Dépannage de l'intersection PostGIS

Dans le deuxième exemple, j'ai géocodé une adresse située à l'intérieur de la forme que je regarde. Toutefois, une valeur false est renvoyée à la suite de la requête.

J'ai utilisé shp2pgsql pour charger les données dans ma base de données directement à partir d'un fichier de forme. Le SRID du fichier de forme est 4269 (j'ai essayé d'exécuter les requêtes ci-dessous en spécifiant le SRID lors de l'appel de GeomFromText mais les résultats sont les mêmes).

Quelle est la différence entre les deux ensembles de coordonnées? Que dois-je faire pour pouvoir effectuer un test d'intersection en utilisant des POINTS qui utilisent des valeurs lat/lon?

1.) SELECT ST_Intersects ((sélectionnez le champ de wardstable où gid = 37), ST_GeomFromText ('POINT (1172539 1924462)'));

2.) SELECT ST_Intersects ((sélectionnez le champ de wardstable où gid = 37), ST_GeomFromText ('POINT (-87.6547884 41.96367)'));

Merci!

Répondre

1

Les ensembles de données Multipolygones et Points doivent tous deux être dans la même projection (SRID) lors d'une opération spatiale telle que ST_Intersects. Dans votre deuxième exemple, les coordonnées du point sont en latitude/longitude (4326). Vous devez les transformer en 4269 en utilisant ST_Transform:

SELECT ST_Intersects((select the_geom from wardstable where gid=37), ST_Transform(ST_GeomFromText('POINT(-87.6547884 41.96367)',4326),4269)); 

Edit: J'ai raté le paramètre SRID dans ST_GeomFromText.