Problem:
Beim Umgang mit Kartendaten ist es wichtig, die Breiten- und Längengradkoordinaten mit ausreichender Präzision zu speichern. In diesem Fall besteht die Anforderung darin, Werte mit 8 Dezimalstellen aufzunehmen.
Diskussion:
Das referenzierte Google-Dokument schlägt die Verwendung von FLOAT(10, 6)-Feldern vor, die erlaubt bis zu 6 Dezimalstellen. Um 8 Dezimalstellen unterzubringen, könnte man die Verwendung von FLOAT(10, 8) in Betracht ziehen. Es gibt jedoch eine präzisere und geeignetere Lösung.
Lösung:
MySQL bietet räumliche Datentypen und Punkt ist ein geeigneter Single- Werttyp zum präzisen Speichern geografischer Koordinaten. Das folgende Beispiel demonstriert die Verwendung:
CREATE TABLE `buildings` ( `coordinate` POINT NOT NULL, /* Even from v5.7.5 you can define an index for it */ SPATIAL INDEX `SPATIAL` (`coordinate`) ) ENGINE=InnoDB;
Um Daten einzufügen, können Sie eine SQL-Anweisung wie diese verwenden:
INSERT INTO `buildings` (`coordinate`) VALUES (POINT(40.71727401 -74.00898606));
Der Datentyp „Punkt“ stellt sicher, dass Koordinaten mit hoher Präzision gespeichert werden , wobei die 8 Dezimalstellen erhalten bleiben, die für genaue Kartenberechnungen erforderlich sind.
Das obige ist der detaillierte Inhalt vonWie kann ich Breiten- und Längengraddaten mit 8 Dezimalstellen in MySQL präzise speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!