MySQL จัดเก็บประเภทข้อมูลจุดเป็น LAT LNG หรือ LNG LAT หรือไม่


9

ฉันเคยเห็นรูปแบบสถานที่เป็นละติจูดตามด้วยลองจิจูด แต่ใช้ห้องสมุดฉันเชื่อว่าฉันเข้าใจ MySQL เพื่อเก็บไว้เป็นPOINT(LNG LAT)ลำดับกลับกัน ห้องสมุดของฉันผิดหรือเป็นรูปแบบจริงหรือไม่ ฉันไม่พบรายละเอียดนี้ในเอกสาร MySQL


คุณอาจให้การอ่านนี้ได้: stackoverflow.com/questions/159255/…
codedawg82

คำตอบ:


14

ตัวสร้างไวยากรณ์

ค้นหาการอ้างอิงฟังก์ชันอวกาศคุณจะเห็น

Point(x, y)
Constructs a Point using its coordinates

สิ่งนี้ไม่ถูกต้องทั้งหมด การใช้งานระบบสารสนเทศภูมิศาสตร์ทุกคนจะต้องทำพิกัดที่คาดการณ์ซึ่งเป็น(x,y) (long,lat)แต่ในระบบรองทางธรณีวิทยามีความขัดแย้งเกี่ยวกับสิ่งที่ต้องทำ MySQL (และ SQL Server) ทำ(lat,long)แต่ PostGIS ดูแล(long,lat)ทุกที่

นี้จะสัมผัสกับในสเป็คOpenGIS®การดำเนินงานมาตรฐานสารสนเทศทางภูมิศาสตร์ - การเข้าถึงคุณลักษณะง่าย - ส่วนที่ 2: ตัวเลือก SQL ,

  • สำหรับ CRS geodetic ที่มีระบบพิกัด ellipsoidal 2-axes ระบบพิกัด ellipsoidal แกนสองมิติคือพิกัด geodetic ละติจูดทิศเหนือเป็นบวกและ geodetic ลองจิจูดบวกไปทางตะวันออก ทิศทางแกนจะเป็น 'เหนือ' และ 'ตะวันออก' ตามลำดับ
  • สำหรับ CRS geodetic ที่มีระบบพิกัดรูปวงรีสามมิติชื่อและตัวย่อของแกนแนวนอนในสตริง WKT จะต้องเป็นไปตามข้อกำหนดใน (ii) ชื่อแกนแนวตั้งจะเป็น 'ความสูงของทรงรี'; ตัวย่อของแกนตั้งจะเป็น 'h' และควรรวมเมื่อมีตัวย่อสำหรับแกนนอนรวมอยู่ด้วย

หมายเหตุคำข้างต้นพบคำต่อคำในข้อมูลทางภูมิศาสตร์ - การแสดงข้อความที่รู้จักกันดีของระบบอ้างอิงพิกัด

แม้จะไกลเท่า 1.1 สเป็ค

ระบบการอ้างอิงเชิงพื้นที่หรือที่เรียกว่าระบบพิกัดคือทางภูมิศาสตร์ (ละติจูด - ลองจิจูด) , ที่คาดการณ์ (X, Y) หรือระบบพิกัดทางภูมิศาสตร์ (X, Y, Z)

ที่กล่าวว่าดูเหมือนว่า PostGIS และ Oracle และห้องสมุดบุคคลที่สามจำนวนมากที่รักษา(x,y,[z])คะแนนทุกประเภท นี่เป็นการละเมิดข้อกำหนดสำหรับ WKT แต่เป็นแบบแผนทั่วไป ตัวอย่างเช่นGeoJSON ก็ทำเช่นนี้

พิกัดจุดอยู่ในลำดับที่ x, y (ทิศตะวันออกเฉียงเหนือสำหรับพิกัดที่ฉายลองจิจูดและละติจูดสำหรับพิกัดทางภูมิศาสตร์)

และ (ลาดพร้าว, ยาว) การสั่งซื้อที่มีการกำหนดอย่างชัดเจนโดยEPSG สำหรับ SRSID 4326,

ระบบพิกัด 2D หรือ 3D ที่ระบุตำแหน่งโดยละติจูดของ geodetic, geodetic ลองจิจูดและ (ในกรณีสามมิติ) ความสูงของวงรีรูปไข่ที่ใช้ใน CRS ทางภูมิศาสตร์

คุณอาจลองเช็คเอาต์บล็อกของ Paul Ramsey (กัปตัน PostGIS) ในหัวข้อนี้ว่า"Let's Call the Thing Off"

Nicities

ในฐานะที่เป็นโน้ตพิเศษ, MySQL นำฟังก์ชั่นใหม่สองอย่างมาผสมกัน

ฟังก์ชั่นเหล่านี้ยืนกันจากST_X()และST_Y()และต้อง SRS แบบทางภูมิศาสตร์หรือพวกเขาโยนข้อยกเว้นและข้อผิดพลาด

การเก็บรักษา

จากเอกสาร

ภายใน MySQL เก็บค่าทางเรขาคณิตในรูปแบบที่ไม่เหมือนกับรูปแบบ WKT หรือ WKB (รูปแบบภายในเหมือน WKB แต่มีค่าเริ่มต้น 4 ไบต์เพื่อระบุ SRID)

การจัดเก็บถูกกำหนดไว้ที่นี่

Table 11.1 WKB Components Example

Component       Size    Value
Byte order      1 byte  01
WKB type        4 bytes 01000000
X coordinate    8 bytes 000000000000F03F
Y coordinate    8 bytes 000000000000F0BF

0

วิธีง่ายๆในการตรวจสอบคำสั่งซื้อคือการส่งผ่านช่วงละติจูด:

SELECT ST_Longitude(ST_SRID(POINT(45, 160), 4326));

ให้ข้อผิดพลาด 3732 (22S03): พารามิเตอร์ของฟังก์ชัน st_srid มีรูปทรงเรขาคณิตที่มีละติจูด 160.000000 ซึ่งอยู่นอกช่วง ต้องอยู่ภายใน [-90.000000, 90.000000];

ระวังว่าคำสั่งซื้ออาจมีการเปลี่ยนแปลงขึ้นอยู่กับฟังก์ชั่นที่คุณใช้:

SELECT ST_Longitude(ST_SRID(POINT(45, 90), 4326));
SELECT ST_Longitude(ST_GeomFromText('POINT(45 90)', 4326));
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.