日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java geojson_GEOJSON标准格式学习

發(fā)布時間:2024/3/24 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java geojson_GEOJSON标准格式学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近做的項目需要詳細了解geojson,因此查了一些資料,現(xiàn)在整理一份標準格式的記錄,要理解本文需要首先了解json的基本知識,這里不過多展開,可以去參考w3school上的教程,簡言之,json是通過鍵值對表示數(shù)據(jù)對象的一種格式,可以很好地表達數(shù)據(jù),其全稱為JavaScript Object Notation(JavaScript Object Notation),正如這個名稱,JavaScript和json聯(lián)系緊密,但是json可以應(yīng)用的范圍很廣,不止于前端,它比XML數(shù)據(jù)更輕量、更容易解析(某種角度上說xml可以更自由地封裝更多的數(shù)據(jù))。很多編程語言都有對應(yīng)的json解析庫,例如Python的json庫,C#的Newtonsoft.Json,Java的org.json。geojson是用json的語法表達和存儲地理數(shù)據(jù),可以說是json的子集。

例如下面就是一個點數(shù)據(jù):

{

"type": "FeatureCollection",

"features": [

{"type":"Feature",

"properties":{},

"geometry":{

"type":"Point",

"coordinates":[105.380859375,31.57853542647338]

}

}

]

}

例子圖片

(注:以下geojson的效果截圖都來自geojson.io在線生成)

geojson將所有的地理要素分為Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection。首先是將這些要素封裝到單個的geometry里,然后作為一個個的Feature(也就是要素);要素放到一個要素集合里,從樹狀結(jié)構(gòu)來理解FeatureCollection就是根節(jié)點,表示為:

{

"type": "FeatureCollection",

"features": []

}

所有地理要素放在features的列表里。

點要素Point

點要素是最簡單的,類型type對應(yīng)Point,然后坐標是一個1維的數(shù)組,里面有兩個元素(如果是立體的坐標就是三維x,y,z),分別為經(jīng)度和緯度。properties里面可以封裝各種屬性,例如名稱、標識顏色等等。

{"type":"Feature",

"properties":{},

"geometry":{

"type":"Point",

"coordinates":[105.380859375,31.57853542647338]

}

}

多點要素MultiPoint

{"type":"Feature",

"properties":{},

"geometry":{

"type":"MultiPoint",

"coordinates":[[105.380859375,31.57853542647338],

[105.580859375,31.52853542647338]

]

}

}

其核心坐標:

105.380859375,31.57853542647338

105.580859375,31.52853542647338

線要素LineString

線要素就是指線段,記錄的是線的端點坐標,可視化時會按照記錄順序聯(lián)結(jié)。對于曲線(如貝塞爾曲線)目前還沒有很好的表達,但是在地理數(shù)據(jù)中,曲線一般會用LineString去擬合,現(xiàn)實地理世界中也沒有標準的曲線地理要素。

線要素的坐標coordinates里的二維數(shù)組和多點要素基本一樣,區(qū)別就在type上了。

{"type":"Feature",

"properties":{},

"geometry":{

"type":"LineString",

"coordinates":[[105.6005859375,30.65681556429287],

[107.95166015624999,31.98944183792288],

[109.3798828125,30.031055426540206],

[107.7978515625,29.935895213372444]]

}

}

對應(yīng)的Kml表達:

108.65753173828125,34.1873818599505 108.72413635253905,34.25154099726973 108.77151489257812,34.16977214177208 108.88481140136719,34.229970811273084

MultiLineString

也是一個三維數(shù)組(和多邊形一樣);

{"type":"Feature",

"properties":{},

"geometry":{

"type":"MultiLineString",

"coordinates":

[

[

[105.6005859375,30.65681556429287],

[107.95166015624999,31.98944183792288],

[109.3798828125,30.031055426540206],

[107.7978515625,29.935895213372444]

],

[

[109.3798828125,30.031055426540206],

[107.1978515625,31.235895213372444]

]

]

}

}

多邊形Polygon

注:單個多邊形是一個3維數(shù)組,可以包含多個二維數(shù)組,這種情況和MultiPolygon效果很像。

{"type":"Feature",

"properties":{},

"geometry":{

"type":"Polygon",

"coordinates":[

[

[106.10595703125,33.33970700424026],

[106.32568359375,32.41706632846282],

[108.03955078125,32.2313896627376],

[108.25927734375,33.15594830078649],

[106.10595703125,33.33970700424026]

]

]

}

}

多多邊形MultiPolygon

type 1 兩個不會相交的多邊形

{

"type": "Feature",

"properties": {},

"geometry": {

"type": "MultiPolygon",

"coordinates":

[

[

[

[109.2041015625,30.088107753367257],

[115.02685546875,30.088107753367257],

[115.02685546875,32.7872745269555],

[109.2041015625,32.7872745269555],

[109.2041015625,30.088107753367257]

]

],

[

[

[112.9833984375,26.82407078047018],

[116.69677734375,26.82407078047018],

[116.69677734375,29.036960648558267],

[112.9833984375,29.036960648558267],

[112.9833984375,26.82407078047018]

]

]

]

}

}

兩個不相交的多邊形

type 2 兩個鑲套的多邊形

小的在前面,范圍大的在后面,用上4個中括號,但效果不是有洞的

{

"type": "Feature",

"properties": {},

"geometry": {

"type": "MultiPolygon",

"coordinates":

[

[

[

[101.6455078125,27.68352808378776],

[114.78515624999999,27.68352808378776],

[114.78515624999999,35.209721645221386],

[101.6455078125,35.209721645221386],

[101.6455078125,27.68352808378776]

]

],

[

[

[104.2822265625,30.107117887092357],

[108.896484375,30.107117887092357],

[108.896484375,33.76088200086917],

[104.2822265625,33.76088200086917],

[104.2822265625,30.107117887092357]

]

]

]

}

}

兩個鑲套的多邊形

type 3 有孔洞的多邊形

{

"type": "Feature",

"properties": {},

"geometry": {

"type": "MultiPolygon",

"coordinates":

[

[

[

[101.6455078125,27.68352808378776],

[114.78515624999999,27.68352808378776],

[114.78515624999999,35.209721645221386],

[101.6455078125,35.209721645221386],

[101.6455078125,27.68352808378776]

],

[

[104.2822265625,30.107117887092357],

[108.896484375,30.107117887092357],

[108.896484375,33.76088200086917],

[104.2822265625,33.76088200086917],

[104.2822265625,30.107117887092357]

]

]

]

}

}

有孔洞的多邊形

可以仔細去品味type2和type3的區(qū)別。它們對應(yīng)的kml表達區(qū)別是比較大的。

GeometryCollection

GeometryCollection是多種基本地理要素的集合,就是里面可以包含點、線、面要素。

{

"type": "GeometryCollection",

"geometries": [

{

"type": "Point",

"coordinates": [108.62, 31.02819]

}, {

"type": "LineString",

"coordinates": [[108.896484375,30.1071178870],

[108.2184375,30.91717870],

[109.5184375,31.2175780]]

}]

}

GeometryCollection不需要放在FeatureCollection里:

{

"type": "FeatureCollection",

"features": []

}

geojson里面還有其他標簽表達其他的屬性,如外包矩形等,其中特別重要的是坐標系統(tǒng),一般里面的坐標默認為WGS84,當(dāng)然也可以是其他坐標系統(tǒng)的坐標,但是要標識。這部分內(nèi)容之后再補充了。

更具體的內(nèi)容可以參考rfc7946。

歡迎關(guān)注本人公眾號,有更多有趣內(nèi)容和資料:

lyns-sailing.png

總結(jié)

以上是生活随笔為你收集整理的java geojson_GEOJSON标准格式学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。