解決iD上傳的衝突(已解決)
https://www.facebook.com/mcdlee/posts/10204308597859719
@劉婕昕 和 黃裕翔 發現從 iD 的頁面 source 可以呈現正在編輯的 #OSM 圖資,也許可以藉此保留.osm,減輕編輯衝突的損失。
以Chrome為例
取得iD編輯內容
當iD因衝突而無法上傳編輯內容的時候,可以透過右鍵選單的檢閱元素功能,在Resources分類底下Local Storage中的osm項目中,找到以「id_網址」為名的Key項目之Value內容。
格式轉換
將之轉換為符合xml格式之「.osm」檔案(參考:http://wiki.openstreetmap.org/wiki/JOSM_file_format),如此便可以透過JOSM解決iD上傳問題。
Javascript library
iD Editor 有個 API 叫做 connection.osmChangeJXON(changeset_id, changes) 可以生成 osmChange XML 檔案。
原始上傳程式碼,理論上會存成一組 changeset, 如果知道 changeset id,可以直接下載。
- connection.putChangeset = function(changes, comment, imageryUsed, callback) {
- oauth.xhr({
- method: ’PUT’,
- path: ’/api/0.6/changeset/create’,
- options: { header: { ’Content-Type’: ’text/xml’ } },
- content: JXON.stringify(connection.changesetJXON(connection.changesetTags(comment, imageryUsed)))
- }, function(err, changeset_id) {
- if (err) return callback(err);
- oauth.xhr({
- method: ’POST’,
- path: ’/api/0.6/changeset/’ + changeset_id + ’/upload’,
- options: { header: { ’Content-Type’: ’text/xml’ } },
- content: JXON.stringify(connection.osmChangeJXON(changeset_id, changes))
- }, function(err) {
- if (err) return callback(err);
- oauth.xhr({
- method: ’PUT’,
- path: ’/api/0.6/changeset/’ + changeset_id + ’/close’
- }, function(err) {
- callback(err, changeset_id);
- });
- });
- });
- };
結案
iD在某個版本(待查),加入編輯衝突的處理機制