GeoJSON (.geojson)
IETF มาตรฐานGeoJSON ใช้กับแผนที่เว็บอย่างแพร่หลายแต่การรองรับแตกต่างกัน GitHub แสดงไฟล์ที่รองรับภายใต้ข้อจำกัด และ RFC 7946 กำหนดลองจิจูดก่อนละติจูด
แปลง GEOJSON เป็น KML
ตัวแปลงจาก GEOJSON เป็น KML ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบไฟล์และข้อมูลเมตา
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ GeoJSON โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวระดับไบต์
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ 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 ตาม RFC 7946 ที่แทน Features, FeatureCollections และ Geometries ทางภูมิศาสตร์ |
| การบีบอัด | ข้อความแบบไม่บีบอัด (บีบอัดระหว่างส่งผ่าน HTTP ได้ง่ายด้วย Gzip หรือ Brotli) |
| การจัดลำดับไบต์ | สตรีมข้อความ UTF-8 |
| พื้นที่สี | ไม่เกี่ยวข้อง (ข้อมูลภูมิศาสตร์) |
| ช่องสัญญาณและโครงสร้าง | จุด, หลายจุด, เส้น, หลายเส้น, รูปหลายเหลี่ยม, รูปหลายเหลี่ยมหลายชุด, ชุดเรขาคณิต และคุณสมบัติกำหนดเอง |
| ขนาดสูงสุด | พิกัดระบบ World Geodetic System 1984 (WGS 84): ลองจิจูด (-180 ถึง +180), ละติจูด (-90 ถึง +90) |
| ความโปร่งใส | ไม่มี |
| การสตรีมและแบบโปรเกรสซีฟ | GeoJSON แบบคั่นบรรทัด (GeoJSONL / GeoJSONSeq) ช่วยสตรีมฟีเจอร์หลายล้านรายการได้อย่างต่อเนื่อง |
ตารางเปรียบเทียบทางเทคนิค: 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.app GeoJSON Converter
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
คุณสมบัติของ GeoJSON อาจมีข้อมูลใดๆ ที่ผู้ใช้ป้อนเข้ามา จึงต้องกรองก่อนแสดงในป๊อปอัปแผนที่เพื่อป้องกัน XSS
เวกเตอร์การโจมตีที่ทราบ
- การโจมตีแบบ Cross-site scripting (XSS) ผ่าน HTML ที่ไม่ได้ escape ในคุณสมบัติของฟีเจอร์ GeoJSON ซึ่งแสดงในคำแนะนำบนแผนที่
- การปฏิเสธการให้บริการ (Denial of Service) ผ่าน GeometryCollections ที่ซ้อนกันลึกหรือโพลีกอนที่มีจุดยอดนับล้าน
- Server-Side Request Forgery ผ่านการโหลดฟีเจอร์ GeoJSON ระยะไกล
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: กรองข้อความในคุณสมบัติทั้งหมดด้วย DOMPurify ก่อนใส่ลงในหน้าต่างป๊อปอัปแผนที่
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- มาตรฐานเว็บโดยตรง: แปลงเป็นออบเจ็กต์ JavaScript ในไลบรารีแผนที่บนเบราว์เซอร์ได้ทันที (Mapbox GL JS, Leaflet)
- โครงสร้าง JSON ที่มนุษย์อ่านได้ช่วยให้สร้าง คัดกรอง และดีบักด้วยโปรแกรมได้อย่างง่ายดาย
- สคีมาคุณสมบัติแบบกำหนดเอง: แนบเมทาดตากำหนดเองใดๆ (ประชากร ชื่อ ความเร็ว รายได้) เข้ากับรูปทรงเรขาคณิตได้โดยตรง
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ข้อความมีรายละเอียดมาก: พิกัดทศนิยมจัดเก็บเป็นตัวเลข ASCII ซ้ำๆ ทำให้ไฟล์มีขนาดใหญ่กว่า Shapefile หรือ FlatGeobuf แบบไบนารี
- RFC 7946 บังคับใช้ลำดับ [ลองจิจูด, ละติจูด] อย่างเคร่งครัด ซึ่งมักทำให้ผู้พัฒนาที่คุ้นเคยกับ 'ละติจูด/ลองจิจูด' สับสนบ่อยครั้ง
- โพลีกอนขนาดใหญ่ที่มีจุดยอดนับล้านอาจทำให้การเรนเดอร์ DOM ของเว็บเบราว์เซอร์ช้าลง
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- มาตรฐาน GeoJSON อย่างเป็นทางการเรียงลำดับพิกัดเป็น [ลองจิจูด, ละติจูด] (ลำดับคาร์ทีเซียน X, Y) ซึ่งตรงกันข้ามกับวิธีที่ผู้คนพูด ('ละติจูด, ลองจิจูด')
- GeoJSON ใช้กับแผนที่เว็บอย่างแพร่หลายแต่การรองรับแตกต่างกัน GitHub แสดงไฟล์ที่รองรับภายใต้ข้อจำกัด และ RFC 7946 กำหนดลองจิจูดก่อนละติจูด
- RFC 7946 กำหนดให้วงแหวนขอบของโพลีกอนต้องปฏิบัติตาม 'กฎมือขวา': วงแหวนภายนอกต้องหมุนทวนเข็มนาฬิกา
คำถามทางเทคนิคที่พบบ่อย
เหตุใดพิกัด GeoJSON จึงเรียงเป็น [ลองจิจูด, ละติจูด] แทน [ละติจูด, ลองจิจูด]?
GeoJSON ใช้กับแผนที่เว็บอย่างแพร่หลายแต่การรองรับแตกต่างกัน GitHub แสดงไฟล์ที่รองรับภายใต้ข้อจำกัด และ RFC 7946 กำหนดลองจิจูดก่อนละติจูด
แปลง KML หรือ Shapefile เป็น GeoJSON ได้อย่างไร?
แปลงไฟล์ KML จาก Google Earth หรือ Shapefile ของ Esri เป็น GeoJSON ที่พร้อมใช้ทำแผนที่บนเว็บได้ในคลิกเดียวด้วย File2File.app ในเบราว์เซอร์
ความแตกต่างระหว่าง GeoJSON และ Shapefile คืออะไร
Shapefile ยังคงใช้กันอย่างแพร่หลายในการแลกเปลี่ยนข้อมูลและรองรับโดยซอฟต์แวร์ GIS แต่โครงสร้างที่มีหลายไฟล์และข้อจำกัดของแอตทริบิวต์อาจทำให้ GeoJSON หรือฐานข้อมูลเชิงพื้นที่เหมาะกับบางเวิร์กโฟลว์มากกว่า
คู่การแปลงไฟล์ GeoJSON ที่เกี่ยวข้อง
การแปลงข้อมูลเวกเตอร์ GeoJSON เป็น Google KML จะแปลงชุดพิกัด JSON ขนาดกะทัดรัดให้เป็นเอกสาร XML ที่มีโครงสร้าง ซึ่งออกแบบมาสำหรับ Google Earth และ Google Maps
การแปลงไฟล์ Google KML เป็น GeoJSON จะเปลี่ยนข้อมูลภูมิศาสตร์แบบ XML ที่มีโครงสร้างลำดับชั้น ให้เป็นข้อมูลเวกเตอร์ JavaScript Object Notation น้ำหนักเบา สำหรับแผนที่เว็บสมัยใหม่
การแปลงข้อมูลเวกเตอร์ GeoJSON เป็น GPX ทำหน้าที่เปลี่ยนออบเจกต์ JSON ทางภูมิศาสตร์มาตรฐานให้อยู่ในรูปแบบ XML ที่ปรับแต่งมาสำหรับอุปกรณ์นำทางภาคสนาม