Java 및 Postgres를 사용하여 버스 도착 예측 시스템을 만들고 있습니다. 각 버스에 고정 된 경로가 있으므로 Postgres에 LineString으로 전체 운전 경로를 저장하고 있습니다.gps 좌표를 사용하여 다음 버텍스로 거리 찾기
이 3 버스 파업, 그리고 각 버스 정류장 위도의 경도는 라우팅 테이블에 유도 선으로 저장됩니다. 정지 이름과 세부 정보가있는 테이블이 하나 더 있습니다.
stoppage_details 표
Stoppage 1 - lat1,lon1
Stoppage 2 - lat2,lon2
Stoppage 3 - lat3,lon3
내가 포스트 그레스를 찾고는 문제보다 해결하기 위해 작동합니다.
- 어떻게 ( 지점을 위도 경도 및 종료 지점의 위도의 경도를 시작) 유도 선을 사용하여 경로의 총 거리 (660m)을 얻을 수 있습니다.
- 30 초마다 데이터를 보내는 각 버스에 GPS 시스템이 설치되어 있습니다. ST_ClosestPoint 기능을 사용하여 LineString에서 가장 가까운 버텍스 을 찾습니다. LineString을 사용하여 버텍스와 다음 사이의 거리를 찾을 수있는 방법은 이고 이전 중지 방법은 무엇입니까?
- 또는 누군가가 위의 문제를 해결하기 위해 다른 방법을 제안 할 수 있습니까?
ST_length (line :: geography) FROM routes를 선택했습니다. 그러나 정확한 길이를 제공하지는 않습니다. 선 스트링에서 GPS 좌표의 이전 및 다음 정지를 확인할 수있는 방법이 있습니까? – raw
linstring이 srid : 4326 (WGS84) 인 경우 적절한 돌출부에 투영하여 길이를 계산해야합니다. 지리학에 그것을 캐스팅하는 것은 미터 단위의 글로벌 mercator 투영과 같은 것으로 투영함으로써 이것을합니다. st_length_spheriod() http://postgis.net/docs/manual-1.4/ST_Length_Spheroid.html을 시도해 볼 수 있습니다. spheriod를 투영하고 싶은 spheriod를보다 잘 제어 할 수 있습니다. 포인트 2에 관해서 –
. 나는 이것을하는 1 개의 길이 기술했다. 당신이 요구 한 바로 그 "통조림"기능은 없습니다. Postgis는보다 복잡한 솔루션을 구축 할 수있게 해주는 툴 세트입니다. 많은 사용자가 pgplsql 스토어드 프로 시저를 작성하여 더 복잡하거나 특정 작업을 수행합니다. "PostGIS in Action"을 권장합니다. http://www.postgis.us/ –