Mehr

Berechnen von Abständen zwischen Geometriespalten unterschiedlicher SRIDs


Ich versuche eine relativ einfache Aufgabe, bin aber in Schwierigkeiten geraten. Ich habe zwei Tabellen, eine mit Lat- und Lon-Punkten, die mit Google geokodiert wurden (SRID 3857) und eine andere Tabelle, die Blockgrenzen enthält, die aus der Volkszählung erhalten wurden (SRID 4269). Unten sind die Schritte, die ich unternommen habe.

Nach der Konvertierung der Google Map-Punkte in Geometrie. Ich habe versucht, mir die Sache zu erleichtern, indem ich die Schwerpunkte der Blockgrenzen mit dem folgenden Befehl berechnet habe

CREATE TABLE mytable AS SELECT var1, var2, ST_Centroid(geom) as geom FROM oldtable;

Als nächstes habe ich versucht, die Schwerpunkte in der neuen Tabelle mit folgendem in SRID 3857 umzuwandeln

CREATE TABLE block3857 AS SELECT var1, var2, ST_Transform(geom, 3857) as geom FROM mytable;

Nachdem ich einen Geoindex sowohl für die neue Volkszählungstabelle als auch für die Tabelle von Google Maps erstellt hatte, habe ich versucht, die Google Maps-Geometrie mit den Zensusschwerpunkten wie folgt zusammenzuführen:

CREATE TABLE zusammengeführt als SELECT a.var1,b.var2, b.var3 FROM googlemapstable als a,block3857 als b WHERE ST_DWithin(a.geom,b.geom,4828.032)

Zu meiner Überraschung führte die Zusammenführung zu keinem Ergebnis. Ich habe einige der Punkte in R übereinander gezeichnet und festgestellt, dass sich viele von ihnen überlappen und hätten zusammengeführt werden sollen. Mein nächster Schritt zur Fehlersuche bestand darin, die Abstände zwischen den Punkten zu untersuchen. Ich habe nur eine kleine Teilmenge der Punkte in einer Stadt genommen und festgestellt, dass ST_Distance Ergebnisse von fast 1.000.000 Einheiten ergab.

Ich habe mir die zugrunde liegenden Lat- und Lon-Punkte der Geometriespalten angesehen und festgestellt, dass die Google Map-Punkte für die USA normal aussahen, aber die Lat- und Lon-Punkte der Zählung waren anders als ich je gesehen habe, mit dem ganzzahligen Teil des Punkts 8 Stellen lang sein. Ich ging zurück und stellte fest, dass diese Änderung des Lat / Lon-Wertes NACH der Konvertierung in SRID 3857 auftrat. Weiß jemand, ob die ST_Distance-Funktion die Lat- und Lon-Punkte verwendet, um die Berechnung durchzuführen, und wenn dies mein Problem verursacht? Hat jemand eine Lösung für das, was hier los ist?


Ich vermute, dass Ihre Google SRID möglicherweise falsch ist.

Ich glaube, dass die Google Geocode-Ergebnisse SRID 4326 (WGS 84) verwenden.

Ich glaube, Google verwendet 3857 für die Kartenanzeige, gibt die Daten jedoch als 4326 aus.