타입 - php float 변환




문제는 MySQL 데이터베이스에 위도 및 경도 값 저장 (5)

Google Maps GeoCoding API에서 가져온 위도 및 경도 값을 MySQL 데이터베이스에 저장하려고합니다. 값은 float 형식입니다.

12.9274529

77.5905970

그리고 그것을 데이터베이스 (데이터 유형 float)에 저장하려면 float를 올림하고 다음 형식으로 저장하십시오.

12.9275

77.5906

잘못된 데이터 유형을 사용하고 있습니까? 그렇다면 위도 및 경도 값을 저장하기 위해 어떤 데이터 유형을 사용해야합니까?

업데이트 :

여기 Allin이 요청한 CREATE TABLE이 있습니다.

CREATE TABLE `properties` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `description` text,
  `latitude` float DEFAULT NULL,
  `longitude` float DEFAULT NULL,
  `landmark` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `serial` (`serial`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

MySQL에는 GIS 응용 프로그램을위한 특별한 유형이 있습니다.

point 유형을 사용하여 다음을보십시오.

http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html

일반적인 토론은 http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html 참조하십시오.

어떤 사람들은 구체 (즉, 지구)상의 점들 사이의 거리 계산을위한 특별한 UDF를 만들었습니다.
참조 : http://www.lenzg.net/archives/220-New-UDF-for-MySQL-5.1-provides-GIS-functions-distance_sphere-and-distance_spheroid.html

howto는 다음과 같습니다. http://howto-use-mysql-spatial-ext.blogspot.com/2007/11/using-circular-area-selection.html


내 경험에 가장 적합한 설정은 DOUBLE (11,8)이며, 위도 / 경도가> 99 일 수 있음을 명심하십시오.


숫자를 근사치로 나타내지 않으려면 decimal 를 사용해야합니다.

고정 소수점 (정확한 값) 유형

DECIMAL 및 NUMERIC 유형은 정확한 숫자 데이터 값을 저장합니다. 이러한 유형은 통화 데이터와 같이 정확한 정밀도를 유지하는 것이 중요한 경우에 사용됩니다.

그리고 이제 "여기 있네"대답 :

DECIMAL(10,7) 사용하십시오. 여기서 10 은 숫자의 총 자릿수이고 7. 자의 자릿수 . . (점이 3 자리가되기 전에 의미합니다.)

필요에 따라이 숫자를 조정하십시오. 또한 대답 앞부분에 링크 된 수동 항목을 살펴보십시오.


십진수 (10,8)가 충분합니다. 일부 GPS 장치는 더 정확한 위치를 제공합니다.


double 사용하다

float 는 소수점 이하 자릿수를 저장하는 데 필요한 정밀도가 부족합니다. 항상 모든 숫자에 대해 소수점 7 자리가 있다고 보장되는 것은 아니지만 십진수의 왼쪽에 8 자리 이하의 자리가 있으므로 필요에 맞게 선택해야합니다.







floating-point