>

위도/경도 쌍에서 계산을 수행한다는 점을 고려하면 MySQL 데이터베이스와 함께 사용하기에 가장 적합한 데이터 유형은 무엇입니까?


  • 답변 # 1

    GIS와 함께 MySQL의 공간 확장을 사용하십시오.

  • 답변 # 2

    Google은 Google지도와 함께 "Store Locator"응용 프로그램을위한 PHP/MySQL 솔루션을 완성하기 시작했습니다. 이 예에서는 위도/경도 값을 길이가 "10,6"인 "Float"로 저장합니다

    http://code.google.com/apis/maps/articles/phpsqlsearch.html

  • 답변 # 3

    기본적으로 위치에 필요한 정밀도에 따라 다릅니다. DOUBLE을 사용하면 3.5nm 정밀도를 얻을 수 있습니다. DECIMAL (8,6)/(9,6)은 16cm로 내려갑니다. FLOAT는 1.7m입니다 ...

    이 흥미로운 테이블은보다 완전한리스트를 가지고 있습니다 : http://mysql.rjweb.org/doc.php/latlng :

    Datatype               Bytes            Resolution
    Deg*100 (SMALLINT)     4      1570 m    1.0 mi  Cities
    DECIMAL(4,2)/(5,2)     5      1570 m    1.0 mi  Cities
    SMALLINT scaled        4       682 m    0.4 mi  Cities
    Deg*10000 (MEDIUMINT)  6        16 m     52 ft  Houses/Businesses
    DECIMAL(6,4)/(7,4)     7        16 m     52 ft  Houses/Businesses
    MEDIUMINT scaled       6       2.7 m    8.8 ft
    FLOAT                  8       1.7 m    5.6 ft
    DECIMAL(8,6)/(9,6)     9        16cm    1/2 ft  Friends in a mall
    Deg*10000000 (INT)     8        16mm    5/8 in  Marbles
    DOUBLE                16       3.5nm     ...    Fleas on a dog
    
    

    이것이 도움이되기를 바랍니다.

  • 답변 # 4

    MySQL의 Spatial Extensions는 공간 연산자와 인덱스의 전체 목록을 사용할 수 있으므로 최상의 옵션입니다. 공간 인덱스를 사용하면 거리 기반 계산을 매우 빠르게 수행 할 수 있습니다. 6.0부터는 공간 확장이 여전히 불완전하다는 점에 유의하십시오. 나는 MySQL Spatial을 내려 놓지 않고, 너무 멀리 가기 전에 함정을 알려 주기만한다.

    포인트와 DISTANCE 기능 만 엄격하게 다루는 경우에는 문제가 없습니다. 다각형, 선 또는 버퍼 포인트로 계산해야하는 경우 공간 연산자는 "관련"연산자를 사용하지 않으면 정확한 결과를 제공하지 않습니다. 21.5.6 맨 위에있는 경고를 참조하십시오. 포함, 내부 또는 교차와 같은 관계는 정확한 지오메트리 모양이 아닌 MBR을 사용하고 있습니다 (예 : 타원은 사각형으로 처리됨).

    또한 MySQL Spatial의 거리는 첫 번째 지오메트리와 동일한 단위입니다. 즉, 10 진수도를 사용하는 경우 거리 측정 값은 10 진수 도입니다. 이것은 적도에서 furthur를 얻을 때 정확한 결과를 얻는 것을 매우 어렵게 만듭니다.

  • 답변 # 5

    ARINC424에서 제작 한 내비게이션 데이터베이스에 대해이 작업을 수행했을 때 상당한 양의 테스트를 수행하고 코드를 다시 살펴본 결과 DECIMAL (18,12) (실제로 NUMERIC (18,12) )는 파이어 버드 였기 때문에)

    부동 수와 복식은 정확하지 않으며 반올림 오류가 발생하여 매우 나쁠 수 있습니다. 문제가있는 실제 데이터를 찾은 경우 기억이 나지 않습니다. 그러나 float 또는 double에 정확하게 저장할 수 없으면 문제가 발생할 수 있다고 확신합니다

    도는 라디안이나 각도를 사용할 때 값의 범위를 알고 분수 부분이 가장 많은 숫자를 필요로한다는 것입니다.

    MySQL Spatial Extensions는 OpenGIS Geometry Model을 따르기 때문에 좋은 대안입니다. 데이터베이스를 이식 가능하게 유지해야했기 때문에 사용하지 않았습니다.

관련 자료

  • 이전 html - 3 열 레이아웃 동일 높이
  • 다음 c - ret이 최적화로 사라지는 이유는 무엇입니까?