위도와 경도에 대한 올바른 데이터 유형? (activerecord에서)
위도와 경도를 문자열이나 부동 (또는 다른 것)으로 저장해야합니까?
(중요하다면 레일에 activerecord / ruby를 사용하고 있습니다).
더 복잡한 지리적 계산을 수행해야하는 경우 Postgresql 용 PostGIS 또는 MySQL 용 MySQL Spatial Extensions 를 조사 할 수 있습니다 . 그렇지 않으면 부동 소수점 (배정 밀도가 좋은 생각 일 수 있음)이 작동합니다.
편집 : GeoRuby 라이브러리에는 앞서 언급 한 두 데이터베이스에 대한 공간 / GIS 확장 작업을위한 Rails 확장이 포함되어있는 것 같습니다 .
이것이 내가 사용하는 것입니다.
add_column :table_name, :lat, :decimal, {:precision=>10, :scale=>6}
add_column :table_name, :lng, :decimal, {:precision=>10, :scale=>6}
공간적으로 활성화 된 데이터베이스를 사용하지 않는 경우 Google지도 에서는 크기 (10,6)의 부동 소수점을 사용하는 것이 좋습니다 . 소수점 이하 6 자리 숫자를 제공합니다. 정밀도를 높이려면 그에 따라 조정할 수 있습니다.
실제로 큰 차이를 만들지는 않지만 수레를 사용하는 것이 좋습니다. Floats는 미래에 원할 경우 계산하기가 더 쉽습니다.
일반적으로 Lat / Long은 보유한 가장 큰 float 유형에 저장되기를 원합니다. 일부 위도 (예 : 적도 근처)에서 경도의 아주 작은 변화는 표면 거리 측면에서 큰 차이와 동일 할 수 있습니다.
나는 그것이 당신이 어떤 수학도하고 싶지 않을 필드라면 문자열을 사용할 수 있다고 생각합니다. 나는 그것을 피할 것입니다.
고정 정밀도이므로 상당한 성능 향상을 위해 정수로 변환하고 저장해야합니다.
( http://www.postgresql.org/docs/9.1/static/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL 참조 )
'IT TIP' 카테고리의 다른 글
| cat의 출력을 cURL로 파이프하여 파일 목록을 다운로드합니다. (0) | 2020.10.25 |
|---|---|
| .NET 경로가 디렉토리가 아닌 파일인지 확인하는 방법은 무엇입니까? (0) | 2020.10.25 |
| 안드로이드 보류중인 의도 알림 문제 (0) | 2020.10.25 |
| 프로그래밍 방식으로 ProgressBar를 만드는 방법은 무엇입니까? (0) | 2020.10.25 |
| 307 Chrome에서 analytics.js를로드 할 때 리디렉션 (0) | 2020.10.25 |