在 GeoJSON 中建構 polygon
使用 ChatGPT 將未處理的 GeoJSON 建構成 polygon
使用 ChatGPT o1-preview/o1-mini 模型建構 polygon
因為現在的 GeoJSON 檔案只是一個個的點,無法辨識各個座標點到底屬於哪個 polygon,因此我們要使用 ChatGPT 來幫助我們在 GeoJSON 中建構 polygon。這裡使用的是 ChatGPT 的 o1-preview 模型,這個模型具備了思考邏輯的能力,並且具備 128k 的超長上下文窗口,因此在處理這種大量、程序單一、具有固定轉換邏輯的任務會相較適合。
ChatGPT o1-preview/o1-mini 模型使用方式
使用 AI 最重要的就是下達有效的指令給他,我們使用的指令如下:
你能辨識其中的線段座標讓他們以四個線段為一組變成一個個矩形嗎?
一個矩形包含四個座標點,並且在描述時使用righthand-rule,需要在最後重複一次第一個座標點,來完成一個ploygon的描述。
// 這裡是你未處理的 GeoJSON 檔案ChatGPT o1-preview/o1-mini 模型輸出
使用如上的指令後,輸出的 GeoJSON 檔案會變成一個個的 polygon,這樣就可以在後續的步驟中進行細部的檢查。
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "polygon/1",
"properties": {
"id": "polygon/1"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[121.51585576187, 25.12280734062],
[121.51588158151, 25.12280856371],
[121.51588293238, 25.12278518661],
[121.51585711274, 25.12278396352],
[121.51585576187, 25.12280734062]
]
]
}
},
{
"type": "Feature",
"id": "polygon/2",
"properties": {
"id": "polygon/2"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[121.51577082241, 25.12274772282],
[121.51580148958, 25.12274917554],
[121.51580487456, 25.12269059823],
[121.51577420739, 25.12268914551],
[121.51577082241, 25.12274772282]
]
]
}
},
{
"type": "Feature",
"id": "polygon/3",
"properties": {
"id": "polygon/3"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[121.51564830902, 25.12276841409],
[121.51569480425, 25.12277061659],
[121.51569650191, 25.12274123847],
[121.51565000668, 25.12273903597],
[121.51564830902, 25.12276841409]
]
]
}
},
// ...
]
}如果 geojson 檔案超過 128k token 長度
如果 geojson 檔案超過 128k tokens,可以將 geojson 檔案分割成多個檔案,然後分別使用 ChatGPT 進行處理,最後再將處理後的檔案合併。
- 一次處理大概 5,000 行、大約 60,000~70,000 tokens 的 geojson 檔案,比較不容易出現問題。
- 分別處理完前半段和後半段,最後再合併成一個單獨的 geojson 檔案。
- 合併完後在 geojson.io 上檢查是否有錯誤,並修正缺少的多邊形以及錯誤的多邊形。
如果 geojson 檔案超過 128k token 長度,並且包含許多複雜的多邊形(圓弧、四個邊以上的多邊形)
如果檔案中包含許多複雜的多邊形,可以先在 JOSM 中新建圖層分離出這些多邊形,將複雜的多邊形分別用同樣的流程處理,確保形狀沒問題之後,再將這些多邊形合併回原本的 geojson 檔案。
分離複雜多邊形到新圖層
- 在 JOSM 中開啟新圖層 ⌘ Command + N,複製要分離出來處理的多邊形。
- 在新圖層中貼上該多邊形,並且放置在原本的位置,快捷鍵 ⌘ Command + ⌥ Option + V,就可以在新圖層中將多邊形放置在原本的位置。
儲存包含複雜多邊形的 OSM 檔案
- 將包含複雜多邊形的圖層儲存成 OSM 檔案。
- 將 OSM 檔案使用 osmtogeojson 轉換成 GeoJSON 檔案。
使用 ChatGPT o1-preview/o1-mini 模型建構複雜的 polygon
- 將 geojson 交給 ChatGPT 進行處理,將這些線段、座標點組成正確的多邊形。
- 在 geojson.io 上檢查是否有錯誤,修正座標點排列順序 (影響是否正確圍成多邊形)。
- 將處理完的 geojson 檔案合併回原本的 geojson 檔案。
- 最後再檢查一遍所有多邊形是否正確顯示。