2017-04-01 4 views
0

그 시점에 선을 만들고 싶어하고 또한 그 시점에 선을 만들고 싶어나는 또한/길이가 지적하는 위도 및 변환과 PostgreSQL을 함께 일하고 있어요 내가 가리 키도록 위도/경도 변환과 PostgreSQL을 함께 일하고 있어요

명시 적 변환

등을 사용하는 것도 한 42883은 st_makepoint이 존재하지 않고 :

하지만 결과

select bs1.rental_shop_name, 
    bs1.lon, 
    bs1.lat, 
    bs2.rental_shop_name, 
    bs2.lon, 
    bs2.lat, 
    count(*), 
    ST_MakeLine(ST_MakePoint(bs1.lon, bs1.lat), ST_MakePoint(bs2.lon, bs2.lat)) 
from bikeuser as bu 
join bikestation as bs1 on bs1.rental_shop_code = bu.rental_shop_code 
join bikestation as bs2 on bs2.rental_shop_code = bu.return_shop_code 
group by bs1.rental_shop_name, 
    bs1.lon, 
    bs1.lat, 
    bs2.rental_shop_name, 
    bs2.lon, 
    bs2.lat, 
    ST_MakeLine(ST_MakePoint(bs1.lon, bs1.lat), ST_MakePoint(bs2.lon, bs2.lat)) 
order by count desc limit 40 
실패하고 MSG는

SQL 상태입니다 그래서 나는 이와 같은 간단한 형태로 테스트했다.

SELECT ST_MakePoint(-71.1043443253471, 42.3150676015829); 

하지만 그 같은 결과

...

+2

ST_MakePoint는 표준 PostgreSQL 함수가 아니며 PostGIS에 포함되어 있습니다. 설치 했습니까? – jcaron

+0

http://postgis.net/install/ –

답변

0

그냥 ST_MakePoint는 위도 긴으로는 충분하지 않습니다. 기하 구조의 SRID도 설정해야합니다. 데이터가 WGS84에서 오는 경우 (일반적으로 위도가 길 경우) 지오메트리에 ST_SetSRID를 적용해야합니다.

ST_MakeLine(ST_SetSRID(ST_MakePoint(bs1.lon, bs1.lat),4326), ST_SetSRID(ST_MakePoint(bs2.lon, bs2.lat),4326)) 

개인 데이터 SRID를 고려해야합니다.