2013-09-24 2 views
2

수천 개의 스포츠 공간에 대한 전체 정보가 포함 된 PostGIS 시스템의 모든 정보를 마이그레이션하려고합니다. 이 모든 공간에 대해 위도와 경도 값이 있고 PostGis에 대한 기하학 값이 필요합니다.이 열은 이미 내 위치 "위치"에 있습니다.Postgis 경도, 도형에 대한 위도 postgresql

해당 응용 프로그램의 SRID 내가 경도와 위도으로부터 기하학 값을 계산하는 방법에 대해 검토 한 23030.

, 그리고 나는 것을 발견 :

update location set point=ST_GeomFromText('POINT('|| longitud || ' ' || latitud ||')',23030); 
UPDATE georrepositorio.geometria SET point = ST_SetSRID(ST_Point(longitud, latitud),23030); 
UPDATE georrepositorio.geometria SET POINT = ST_SetSRID(ST_MakePoint(longitud,latitud),23030); 

난 항상 같은 문자열을 얻을 : "0101000020F6590000894327550B97114104EA99EA599D4E41"

건물 웹 응용 프로그램에서 공간을 찾기 위해 점을 표시하면 테이블 "위치"에 다음과 같은 문자열이 삽입됩니다. "0101000020F659000000000020DFB115C00000008053244240" 해당 기능을 사용하는 문자열과 유사합니다.

문제는 너무 많은 공간이 있기 때문에 각 공간을 찾을 수 없다는 것입니다. 따라서 대규모 마이그레이션이 필요하고 기하학 열을 계산하는 함수를 사용하면 작동하지 않습니다. 왜냐하면 ok 함수는 기하 값을 계산하지만, 응용 프로그램에 쿼리하면 그 값이 표시되지 않습니다.

누구나 위도와 경도에서 geomtry를 계산하는 방법을 알고 계십니까? anything

답변

2

첫째, 기하학은 well-known binary (WKB)이라고하는 "0101000020 ..."으로 표시되는 2 진수로 저장됩니다. POINT Geometry의 경우 경도는 ST_X(point)이고 위도는 ST_Y(point) 인 좌표 서수를 추출 할 수 있습니다. 사람이 읽을 수있는 WKT 표현에 ST_AsText(point)을 사용할 수도 있습니다.

EPSG:23030은 투영 된 공간 참조 시스템 (SRS)이며, eastings와 northings는 미터 단위입니다. 그러나 좌표 데이터가 위도와 경도 인 경우 다른 SRS (예 : EPSG:4326)를 사용해야합니다. 올바르게 저장되면 ST_Transform(point, 23030)을 사용하여 응용 프로그램의 데이터를 다시 투영 할 수 있습니다.

+0

감사합니다. 마이크! 나는 그것을 좋아했다. –