GeoJSON (.geojson)

IETF มาตรฐาน

Geographic JavaScript Object Notation (GeoJSON) คือมาตรฐานระดับโลกแบบเว็บเนทีฟสำหรับการเข้ารหัสโครงสร้างข้อมูลทางภูมิศาสตร์ ซึ่งนิยมใช้กันอย่างแพร่ขอบในการทำแผนที่เว็บสมัยใหม่ (Leaflet, Mapbox, OpenLayers) และแอปพลิเคชัน GIS

แปลง GEOJSON เป็น KML

ตัวแปลงจาก GEOJSON เป็น KML ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ

ตรวจสอบและดู Metadata

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ GeoJSON โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

เลือกหรือวางไฟล์ที่นี่

การแปลงไฟล์แบบส่วนตัว 100% ในเบราว์เซอร์ - ไฟล์จะไม่ rời ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V
การรับประกันความเป็นส่วนตัวแบบไม่มีการส่งผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

ลายเซ็นส่วนหัวในระดับไบต์ (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 (ปัจจุบัน)KMLGPXSHP
การนำไปใช้ในการทำแผนที่เว็บค่าเริ่มต้น 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 ระยะไกล

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:

ประวัติความเป็นมาและเหตุการณ์สำคัญ

2016IETF กำหนดมาตรฐานรูปแบบ GeoJSON อย่างเป็นทางการเป็น RFC 7946 โดยบังคับใช้ระบบอ้างอิงพิกัด WGS 84
2014GitHub เปิดตัวการแสดงผลแผนที่ภาพเชิงโต้ตอบแบบเนทีฟสำหรับไฟล์ .geojson ทั้งหมด
2008Howard Butler, Sean Gillies และชุมชน GIS โอเพนซอร์ส เผยแพร่ข้อกำหนด GeoJSON 1.0 เริ่มต้น

ข้อได้เปรียบและจุดเด่นสำคัญ

  • มาตรฐานเว็บเนทีฟ: แมปโดยตรงเป็นออบเจ็กต์ 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 ที่สะอาด