Programing

위도와 경도에 대한 데이터 유형은 무엇입니까?

lottogame 2020. 7. 13. 08:09
반응형

위도와 경도에 대한 데이터 유형은 무엇입니까?


PostgreSQL과 PostGIS를 처음 사용합니다. PostgreSQL 9.1.1 데이터베이스 테이블에 위도 및 경도 값을 저장하고 싶습니다. 두 점 사이의 거리를 계산하고이 위치 값을 사용하여 더 가까운 점을 찾습니다.

위도와 경도에 어떤 데이터 유형을 사용해야합니까?


위도 / 길이가 될 수있는 데이터 유형 point-결합 (x,y)을 사용할 수 있습니다. 16 바이트를 점유합니다 : float8내부적으로 2 개의 숫자.

또는 float(= float8또는 double precision) 유형의 두 열로 만드십시오 . 각각 8 바이트
또는 real(= float4) 추가 정밀도가 필요하지 않은 경우. 각각 4 바이트
또는 numeric절대 정밀도가 필요한 경우 에도 마찬가지 입니다. 각 그룹의 4 자리 숫자는 2 바이트이며 오버 헤드는 3-8 바이트입니다.

숫자 유형기하 유형 에 대한 자세한 설명서를 읽으십시오 .


geometrygeography데이터 유형은 추가 모듈에 의해 제공됩니다 PostGIS와 차지할 하나의 테이블에 열을. 각 포인트에 대해 32 바이트를 차지합니다. SRID와 같은 추가 오버 헤드가 있습니다. 이러한 유형은 (lat / long)이 아닌 (long / lat)을 저장합니다.

여기 에서 PostGIS 매뉴얼을 읽으 십시오 .


PostGIS에는 위도와 경도가있는 점에 대해 지리 데이터 유형이 있습니다.

열을 추가하려면

alter table your_table add column geog geography;

데이터를 삽입하려면

insert into your_table (geog) values ('SRID=4326;POINT(longitude latitude)');

4326은 GPS와 마찬가지로 경도와 위도의 데이터를 나타내는 공간 참조 ID입니다. 그것에 대한 자세한 내용 : http://epsg.io/4326

순서는 경도, 위도입니다. 따라서지도로 표시하면 (x, y)입니다.

가장 가까운 점을 찾으려면 먼저 공간 인덱스를 작성해야합니다.

create index on your_table using gist (geog);

주어진 지점에 가장 가까운 5를 요청하십시오.

select * 
from your_table 
order by geog <-> 'SRID=4326;POINT(lon lat)' 
limit 5;

PostGis를 강력하게 옹호합니다 . 이러한 종류의 데이터 유형에 따라 다르며 미래에 유용 할 수있는 다른 GIS 작업 중에서 포인트 사이의 거리를 계산하는 기본 방법이 있습니다.


PostGIS가 제공하는 모든 기능이 필요하지 않은 경우 Postgres (현재)는 earthdistance 라는 확장 모듈을 제공합니다 . 거리 계산에 필요한 정확도에 따라 포인트 또는 큐브 데이터 유형을 사용합니다 .

이제 earth_box 함수를 사용하여 위치의 특정 거리 내에있는 점을 쿼리 할 수 ​​있습니다.

참고 URL : https://stackoverflow.com/questions/8150721/which-data-type-for-latitude-and-longitude

반응형