Chciałbym zrobić PUNKT, używając kolumn długości i szerokości geograficznej istniejącej tabeli .
Oto link do dokumentacji ST_MakePoint .
Oto mój stół:
CREATE TABLE sysinst.bio (
oid INTEGER PRIMARY KEY,
longitude FLOAT,
latitude FLOAT,
geom GEOMETRY(POINT, 26913)
);
Dodawanie kolumny geometrii:
SELECT AddGeometryColumn ('sysinst', 'bio', 'geom', 26913, 'POINT', 2);
Oto moje zapytanie:
UPDATE sysinst.bio SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 26913);
Brak zwracanego błędu, chociaż PUNKTY są nieprawidłowo drukowane podczas przeglądania w QGIS.
Do (-97.5959, 21.1922)
, I odbieranie(-109.4896, 0.0002)
Jakieś sugestie?
Jestem otwarty na robienie tego bardziej efektywnie, jeśli istnieje łatwiejszy sposób.
Odpowiedzi:
Może nie rozumiem, ale wydaje się, że podajesz współrzędne szerokości geograficznej (-97, 21) w stopniach, do CRS, który jest oparty na UTM i używa mierników. Jeśli deklarujesz to jako SRID 26918, wówczas wartości long / lat muszą znajdować się w tym CRS. Jeśli wartości Long / Lat są wyrażone w stopniach, musisz utworzyć geometrię jako ST_SetSRID (MakePoint (...), 4326), a następnie przekształcić warstwę na 26913. Tak więc, łącząc wszystko razem, jeśli potrzebujesz mieć warstwę w 26913, ale twoje kolumny długości i szerokości geograficznej są w stopniach, a więc CRS 4326
źródło