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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

GeoJSON格式规范说明

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

中英文對照地址:http://www.oschina.net/translate/geojson-spec?cmp

原英文地址:http://geojson.org/geojson-spec.html

翻譯文章地址:http://www.oschina.net/translate/geojson-spec#appendix-a-geometry-examples

1.簡介

GeoJSON是一種對各種地理數(shù)據(jù)結(jié)構(gòu)進行編碼的格式。GeoJSON對象可以表示幾何、特征或者特征集合。GeoJSON支持下面幾何類型:點、線、面、多點、多線、多面和幾何集合。GeoJSON里的特征包含一個幾何對象和其他屬性,特征集合表示一系列特征。

一個完整的GeoJSON數(shù)據(jù)結(jié)構(gòu)總是一個(JSON術(shù)語里的)對象。在GeoJSON里,對象由名/值對--也稱作成員的集合組成。對每個成員來說,名字總是字符串。成員的值要么是字符串、數(shù)字、對象、數(shù)組,要么是下面文本常量中的一個:"true","false"和"null"。數(shù)組是由值是上面所說的元素組成。

1.1.舉例

GeoJSON特征集合:

{ "type": "FeatureCollection","features": [{ "type": "Feature","geometry": {"type": "Point", "coordinates": [102.0, 0.5]},"properties": {"prop0": "value0"}},{ "type": "Feature","geometry": {"type": "LineString","coordinates": [[102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]]},"properties": {"prop0": "value0","prop1": 0.0}},{ "type": "Feature","geometry": {"type": "Polygon","coordinates": [[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],[100.0, 1.0], [100.0, 0.0] ]]},"properties": {"prop0": "value0","prop1": {"this": "that"}}}]}

1.2.定義

  • ?JavaScript對象表示和術(shù)語對象、名字、值、數(shù)組和數(shù)字在IETF RFC 4627 即http://www.ietf.org/rfc/rfc4627.txt里定義。
  • ?這篇文檔里的關(guān)鍵字“必須“,”不允許“,”需要“,”應(yīng)當“,”應(yīng)當不“,”應(yīng)該“,”不應(yīng)該“,”推薦的“,”也許“和”可選的“在IETF RFC 2119, 即http://www.ietf.org/rfc/rfc2119.txt里解釋。
?

2.GeoJSON對象

GeoJSON總是由一個單獨的對象組成。這個對象(指的是下面的GeoJSON對象)表示幾何、特征或者特征集合。

  • GeoJSON對象可能有任何數(shù)目成員(名/值對)。
  • GeoJSON對象必須由一個名字為"type"的成員。這個成員的值是由GeoJSON對象的類型所確定的字符串。
  • ?type成員的值必須是下面之一:"Point", "MultiPoint", "LineString", "MultiLineString", "Polygon",??? "MultiPolygon",?? "GeometryCollection", "Feature", 或者 "FeatureCollection"。這兒type成員值必須如這兒所示。
  • GeoJSON對象可能有一個可選的"crs"成員,它的值必須是一個坐標參考系統(tǒng)的對象(見3.坐標參考系統(tǒng)對象)。
  • GeoJSON對象可能有一個"bbox"成員,它的值必須是邊界框數(shù)組(見4.邊界框)。

2.1幾何對象

?幾何是一種GeoJSON對象,這時type成員的值是下面字符串之一:"Point", "MultiPoint", "LineString", "MultiLineString",? "Polygon", "MultiPolygon", 或者"GeometryCollection"。

?除了“GeometryCollection”外的其他任何類型的GeoJSON幾何對象必須由一個名字為"coordinates"的成員。coordinates成員的值總是數(shù)組。這個數(shù)組里的元素的結(jié)構(gòu)由幾何類型來確定。
?

2.1.1.位置

位置是基本的幾何結(jié)構(gòu)。幾何對象的"coordinates"成員由一個位置(這兒是幾何點)、位置數(shù)組(線或者幾何多點),位置數(shù)組的數(shù)組(面、多線)或者位置的多維數(shù)組(多面)組成。

位置由數(shù)字數(shù)組表示。必須至少兩個元素,可以有更多元素。元素的順序必須遵從x,y,z順序(投影坐標參考系統(tǒng)中坐標的東向、北向、高度或者地理坐標參考系統(tǒng)中的坐標長度、緯度、高度)。任何數(shù)目的其他元素是允許的---其他元素的說明和意義超出了這篇規(guī)格說明的范圍。

位置和幾何的例子在附錄A.幾何例子里呈現(xiàn)。


?
2.1.2.點

? 對類型"Point"來說,“coordinates"成員必須是一個單獨的位置。

2.1.3.多點

? 對類型"MultiPoint"來說,"coordinates"成員必須是位置數(shù)組。

2.1.4.線

對類型"LineString"來說,“coordinates"成員必須是兩個或者多個位置的數(shù)組。

線性環(huán)市具有4個或者更多位置的封閉的線。第一個和最后一個位置是相等的(它們表示相同的的點)。雖然線性環(huán)沒有鮮明地作為GeoJSON幾何類型,不過在面幾何類型定義里有提到它。

2.1.5.多線

對類型“MultiLineString"來說,"coordinates"成員必須是一個線坐標數(shù)組的數(shù)組。

2.1.6.面

對類型"Polygon"來說,"coordinates"成員必須是一個線性環(huán)坐標數(shù)組的數(shù)組。對擁有多個環(huán)的的面來說,第一個環(huán)必須是外部環(huán),其他的必須是內(nèi)部環(huán)或者孔。

2.1.7.多面

對類型"MultiPlygon"來說,"coordinates"成員必須是面坐標數(shù)組的數(shù)組。

2.1.8.幾何集合

類型為"GeometryCollection"的GeoJSON對象是一個集合對象,它表示幾何對象的集合。

幾何集合必須有一個名字為"geometries"的成員。與"geometries"相對應(yīng)的值是一個數(shù)組。這個數(shù)組中的每個元素都是一個GeoJSON幾何對象。
?

2.2.特征對象

類型為"Feature"的GeoJSON對象是特征對象。
  • 特征對象必須由一個名字為"geometry"的成員,這個幾何成員的值是上面定義的幾何對象或者JSON的null值。
  • 特征對戲那個必須有一個名字為“properties"的成員,這個屬性成員的值是一個對象(任何JSON對象或者JSON的null值)。
  • 如果特征是常用的標識符,那么這個標識符應(yīng)當包含名字為“id”的特征對象成員。

2.3.特征集合對象

類型為"FeatureCollection"的GeoJSON對象是特征集合對象。

類型為"FeatureCollection"的對象必須由一個名字為"features"的成員。與“features"相對應(yīng)的值是一個數(shù)組。這個數(shù)組中的每個元素都是上面定義的特征對象。

?

3.坐標參考系統(tǒng)對象

GeoJSON對象的坐標參考系統(tǒng)(CRS)是由它的"crs"成員(指的是下面的CRS對象)來確定的。如果對象沒有crs成員,那么它的父對象或者祖父對象的crs成員可能被獲取作為它的crs。如果這樣還沒有獲得crs成員,那么默認的CRS將應(yīng)用到GeoJSON對象。

  • 默認的CRS是地理坐標參考系統(tǒng),使用的是WGS84數(shù)據(jù),長度和高度的單位是十進制標示。
  • 名字為"crs"成員的值必須是JSON對象(指的是下面的CRS對象)或者JSON的null。如果CRS的值為null,那么就假設(shè)沒有CRS了。
  • crs成員應(yīng)當位于(特征集合、特征、幾何的順序的)層級結(jié)構(gòu)里GeoJSON對象的最頂級,而且在自對象或者孫子對象里不應(yīng)該重復(fù)或者覆蓋。
  • 非空的CRS對象有兩個強制擁有的對象:"type"和"properties"。
  • type成員的值必須是字符串,這個字符串說明了CRS對象的類型。
  • 屬性成員的值必須是對象。
  • CRS應(yīng)不能更改坐標順序(見2.1.1.位置)。
?

3.1. 名字CRS

CRS對象可以通過名字來表明坐標參考系統(tǒng)。在這種情況下,它的"type"成員的值必須是字符串"name"。它的"properties"成員的值必須是包含"name"成員的對象。這個"name"成員的值必須是標識坐標參考系統(tǒng)的字符串。比如“urn:ogc:def:crs:OGC:1.3:CRS84"的OGC CRS的URN應(yīng)當優(yōu)先于舊的標識符如"EPSG:4326"得到選用:

"crs": {"type": "name","properties": {"name": "urn:ogc:def:crs:OGC:1.3:CRS84"}}

3.2. 連接CRS

CRS對象也可以連接到互聯(lián)網(wǎng)上的CRS參數(shù)。在這種情況下,它的"type"成員的值必須是字符串"link",它的"properties"成員的值必須是一個連接對象(見3.2.1.連接對象) 。

!

3.2.1.連接對象

連接對象由一個必需的成員:"href",和一個可選的成員:"type"。

必需的"href"成員的值必須是解引用的URI(統(tǒng)一資源標識)。

可選的"type"成員的值必須是字符串,而且這個字符串暗示了所提供的URI里用來表示CRS參數(shù)的格式。建議值是:"proj4","ogcwkt",esriwkt",不過可以使用其他值:

"crs": {"type": "link","properties": {"href": "http://example.com/crs/42","type": "proj4"}} 相對連接常常可以作為輔助文件里的CRS的直接處理器: "crs": {"type": "link","properties": {"href": "data.crs","type": "ogcwkt"}}
?

4.邊界框

為了包含幾何、特征或者特征集合的坐標范圍信息,GeoJSON對象可能有一個名字為"bbox的成員。bbox成員的值必須是2*n數(shù)組,這兒n是所包含幾何對象的維數(shù),并且所有坐標軸的最低值后面跟著最高者值。bbox的坐標軸的順序遵循幾何坐標軸的順序。除此之外,bbox的坐標參考系統(tǒng)假設(shè)匹配它所在GeoJSON對象的坐標參考系統(tǒng)。

特征對象上的bbox成員的例子:

{ "type": "Feature","bbox": [-180.0, -90.0, 180.0, 90.0],"geometry": {"type": "Polygon","coordinates": [[[-180.0, 10.0], [20.0, 90.0], [180.0, -5.0], [-30.0, -90.0]]]}...} 特征集合對象bbox成員的例子: { "type": "FeatureCollection","bbox": [100.0, 0.0, 105.0, 1.0],"features": [...]}
?

附錄A.集合例子

下面例子中的每一個都表示一個完整的GeoJSON對象。注意JSON對象里的結(jié)尾的空白字符沒有意義。例子里所用的空白符有助于說明這個數(shù)據(jù)結(jié)構(gòu),不過不是必需的。

點坐標是按照x,y順序的(投影坐標的東向、北向,地理坐標的長度、高度):

{ "type": "Point", "coordinates": [100.0, 0.0] }

線的坐標是位置數(shù)組(見2.1.1.位置):

{ "type": "LineString","coordinates": [ [100.0, 0.0], [101.0, 1.0] ]} 面的坐標是線性環(huán)坐標數(shù)組的數(shù)組。這個數(shù)組的第一個元素表示的是外部環(huán)。其他后續(xù)的元素表示的內(nèi)部環(huán)(或者孔)。

沒有孔的:

{ "type": "Polygon","coordinates": [[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ]]} 有孔的: { "type": "Polygon","coordinates": [[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ],[ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ]]} 多點

多點的坐標是位置數(shù)組:

{ "type": "MultiPoint","coordinates": [ [100.0, 0.0], [101.0, 1.0] ]} 多線

多線的坐標是線坐標數(shù)組的數(shù)組:

{ "type": "MultiLineString","coordinates": [[ [100.0, 0.0], [101.0, 1.0] ],[ [102.0, 2.0], [103.0, 3.0] ]]} 多面

多面的坐標是面坐標數(shù)組的數(shù)組:

{ "type": "MultiPolygon","coordinates": [[[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]],[[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],[[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]]]} 幾何集合

幾何集合的幾何數(shù)組里的每個元素都是上面所描述的幾何對象之一:

{ "type": "GeometryCollection","geometries": [{ "type": "Point","coordinates": [100.0, 0.0]},{ "type": "LineString","coordinates": [ [101.0, 0.0], [102.0, 1.0] ]}] } 附錄B.貢獻者 GeoJSON的格式規(guī)格說明是GeoJSON郵件列表即http://lists.geojson.org/listinfo.cgi/geojson-geojson.org討論的結(jié)果。

總結(jié)

以上是生活随笔為你收集整理的GeoJSON格式规范说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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