GeoJSON (.geojson)
IETF มาตรฐานGeographic JavaScript Object Notation (GeoJSON) คือมาตรฐานระดับโลกแบบเว็บเนทีฟสำหรับการเข้ารหัสโครงสร้างข้อมูลทางภูมิศาสตร์ ซึ่งนิยมใช้กันอย่างแพร่ขอบในการทำแผนที่เว็บสมัยใหม่ (Leaflet, Mapbox, OpenLayers) และแอปพลิเคชัน GIS
แปลง GEOJSON เป็น KML
ตัวแปลงจาก GEOJSON เป็น KML ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบและดู Metadata
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ GeoJSON โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวในระดับไบต์ (Magic Bytes)
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ GeoJSON โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
7B 0A 20 20 22 74 79 70 65 22 3A 20 22 46 65 61 74 75 72 65การแสดงผลรูปแบบ ASCII: {\n "type": "Feature
มาตรฐาน: IETF RFC 7946
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | JSON document adhering to RFC 7946 representing geographic Features, FeatureCollections, and Geometries |
| การบีบอัด | Uncompressed text (readily compressed over HTTP via Gzip or Brotli) |
| การจัดลำดับไบต์ (Byte Endianness) | UTF-8 text stream |
| พื้นที่สี | N/A (Geographic Data) |
| ช่องสัญญาณและโครงสร้าง | Points, MultiPoints, LineStrings, MultiLineStrings, Polygons, MultiPolygons, GeometryCollections, and custom properties |
| ขนาดสูงสุด | World Geodetic System 1984 (WGS 84) coordinate space: Longitude (-180 to +180), Latitude (-90 to +90) |
| ความโปร่งใส | None |
| การสตรีมและแบบโปรเกรสซีฟ | Line-delimited GeoJSON (GeoJSONL / GeoJSONSeq) enables continuous streaming of millions of features |
ตารางเปรียบเทียบทางเทคนิค: GeoJSON กับคู่แข่ง
| คุณลักษณะทางเทคนิค | GeoJSON (ปัจจุบัน) | KML | GPX | SHP |
|---|---|---|---|---|
| การนำไปใช้ในการทำแผนที่เว็บ | ค่าเริ่มต้น Web GIS สากล 100% | ค่าเริ่มต้นของ Google Earth | ค่าเริ่มต้นของอุปกรณ์ GPS และการออกกำลังกาย | มาตรฐานเดิมของ Desktop GIS |
| ลำดับพิกัด | [ลองจิจูด, ละติจูด] (X, Y) | ลองจิจูด, ละติจูด, ความสูง | ละติจูด, ลองจิจูด | พิกัด X, Y |
| รูปแบบไวยากรณ์ | คีย์-แวลู JSON สะอาดตา | แท็ก XML ยาว (<kml>) | แท็ก XML ยาว (<gpx>) | ไบนารีหลายไฟล์ (.shp, .shx, .dbf) |
| สคีมาคุณสมบัติ | ออบเจ็กต์คุณสมบัติ JSON กำหนดเอง | แท็กสคีมา ExtendedData | แท็กสคีมา GPX คงที่ | คอลัมน์คงที่ของ dBase IV (.dbf) |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
จุดบนแผนที่ปรากฏในมหาสมุทรใกล้ทวีปแอนตาร์กติกาแทนที่จะเป็นตำแหน่งจริง
สาเหตุหลัก: ค่าละติจูดและลองจิจูดถูกสลับกันโดยไม่ตั้งใจในออบเจ็กต์พิกัด
การกู้คืน: สลับตำแหน่งพิกัด [lon, lat] โดยใช้ File2File GeoJSON Converter
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
คุณสมบัติ GeoJSON สามารถมีอินพุตของผู้ใช้ตามอำเภอใจ ซึ่งต้องได้รับการฆ่าเชื้อก่อนเรนเดอร์ลงในป๊อปอัปแผนที่เพื่อป้องกัน XSS
เวกเตอร์การโจมตีที่ทราบ
- Cross-site scripting (XSS) ผ่าน HTML ที่ไม่ได้หลีกเลี่ยงในคุณสมบัติฟีเจอร์ GeoJSON ที่เรนเดอร์ในทูลทิปของแผนที่
- การปฏิเสธการให้บริการ (Denial of Service) ผ่าน GeometryCollections ที่ซ้อนกันลึกหรือโพลีกอนที่มีจุดยอดนับล้าน
- Server-Side Request Forgery ผ่านการโหลดฟีเจอร์ GeoJSON ระยะไกล
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- มาตรฐานเว็บเนทีฟ: แมปโดยตรงเป็นออบเจ็กต์ JavaScript ในไลบรารีการทำแผนที่บนเบราว์เซอร์ (Mapbox GL JS, Leaflet)
- โครงสร้าง JSON ที่มนุษย์อ่านได้ช่วยให้สร้าง คัดกรอง และดีบักด้วยโปรแกรมได้อย่างง่ายดาย
- สคีมาคุณสมบัติแบบกำหนดเอง: แนบเมทาดตากำหนดเองใดๆ (ประชากร ชื่อ ความเร็ว รายได้) เข้ากับรูปทรงเรขาคณิตได้โดยตรง
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ความยาวของข้อความ: จัดเก็บพิกัดจุดทศนิยมเป็นตัวเลข ASCII ที่ซ้ำกัน ส่งผลให้ขนาดไฟล์ใหญ่กว่า Shapefiles หรือ FlatGeobuf แบบไบนารี
- RFC 7946 บังคับใช้ลำดับ [ลองจิจูด, ละติจูด] อย่างเคร่งครัด ซึ่งมักทำให้ผู้พัฒนาที่คุ้นเคยกับ 'ละติจูด/ลองจิจูด' สับสนบ่อยครั้ง
- โพลีกอนขนาดใหญ่ที่มีจุดยอดนับล้านอาจทำให้การเรนเดอร์ DOM ของเว็บเบราว์เซอร์ช้าลง
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- มาตรฐาน GeoJSON อย่างเป็นทางการเรียงลำดับพิกัดเป็น [ลองจิจูด, ละติจูด] (ลำดับคาร์ทีเซียน X, Y) ซึ่งตรงกันข้ามกับวิธีที่ผู้คนพูด ('ละติจูด, ลองจิจูด')
- หากคุณคอมมิตไฟล์ .geojson ไปยัง GitHub, GitHub จะเรนเดอร์ไฟล์นั้นเป็นแผนที่เชิงโต้ตอบที่คลิกได้โดยอัตโนมัติ
- RFC 7946 กำหนดให้วงแหวนขอบของโพลีกอนต้องปฏิบัติตาม 'กฎมือขวา': วงแหวนภายนอกต้องหมุนทวนเข็มนาฬิกา
คำถามทางเทคนิคที่พบบ่อย
ทำไมพิกัด GeoJSON ของฉันจึงเรียงลำดับเป็น [ลองจิจูด, ละติจูด] แทนที่จะเป็น [ละติจูด, ลองจิจูด]
เนื่องจากในคณิตศาสตร์และคอมพิวเตอร์กราฟิกส์ พิกัดจะถูกระบุเป็น (X, Y) เสมอ โดยลองจิจูดแทนแกน X แนวนอน และละติจูดแทนแกน Y แนวตั้ง
ฉันจะแปลง KML หรือ Shapefile เป็น GeoJSON ได้อย่างไร
คุณสามารถแปลงไฟล์ Google Earth KML หรือ Esri Shapefile เป็น GeoJSON ที่สะอาดและพร้อมใช้งานบนเว็บได้ภายในไม่กี่วินาทีโดยใช้ File2File.app บนเบราว์เซอร์ของคุณ
ความแตกต่างระหว่าง GeoJSON และ Shapefile คืออะไร
Shapefile เป็นรูปแบบไบนารีหลายไฟล์ที่ล้าสมัยตั้งแต่ยุค 1990 (.shp, .shx, .dbf) ส่วน GeoJSON เป็นรูปแบบเว็บแบบเปิดไฟล์เดียวสมัยใหม่ที่เขียนด้วย JSON ที่สะอาด
คู่การแปลงไฟล์ GeoJSON ที่เกี่ยวข้อง
การแปลงข้อมูลเวกเตอร์ GeoJSON เป็น Google KML จะเปลี่ยนพิกัดการทำแผนที่เว็บที่มีน้ำหนักเบาให้เป็นโครงสร้าง XML ที่สมบูรณ์ซึ่งปรับแต่งสำหรับ Google Earth
การแปลงไฟล์ Google KML เป็น GeoJSON จะเปลี่ยนข้อมูลภูมิศาสตร์แบบ XML ที่มีโครงสร้างลำดับชั้น ให้เป็นข้อมูลเวกเตอร์ JavaScript Object Notation น้ำหนักเบา สำหรับแผนที่เว็บสมัยใหม่
การแปลงข้อมูลเวกเตอร์ GeoJSON เป็น GPX ทำหน้าที่เปลี่ยนออบเจกต์ JSON ทางภูมิศาสตร์มาตรฐานให้อยู่ในรูปแบบ XML ที่ปรับแต่งมาสำหรับอุปกรณ์นำทางภาคสนาม