위도와 경도에 대한 데이터 유형은 무엇입니까?
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 바이트입니다.
숫자 유형 및 기하 유형 에 대한 자세한 설명서를 읽으십시오 .
geometry
및 geography
데이터 유형은 추가 모듈에 의해 제공됩니다 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
'Programing' 카테고리의 다른 글
Android 기기에 신뢰할 수있는 CA 인증서를 설치하는 방법은 무엇입니까? (0) | 2020.07.13 |
---|---|
구체적인 URL을 제외 할 수 있습니까? (0) | 2020.07.13 |
자바 스크립트로 XML 인쇄하기 (0) | 2020.07.13 |
IN 연산자와 함께 사용할 변수 정의 (T-SQL) (0) | 2020.07.13 |
종단 간 테스트에 각도기 또는 Karma를 사용해야합니까? (0) | 2020.07.13 |