Geotools与OGC(一)
博主本身是從事GIS研發(fā)工作的,主要以Java進(jìn)行GIS相關(guān)的空間分析研發(fā)作業(yè),那么在Java中比較時(shí)興的開(kāi)源包Geotools自然少不了(主要是我也一直在以geotools進(jìn)行研發(fā)作業(yè),中間也會(huì)用到esri-geometry進(jìn)行一些空間數(shù)據(jù)的處理,這兩個(gè)包在空間數(shù)據(jù)的處理上各自是有不同的,其中的各種厲害以后有機(jī)會(huì)我們可以慢慢一起來(lái)探討)。哼哼。。。好回歸正題,博主畢業(yè)時(shí)間不長(zhǎng),從事GIS研發(fā)工作的年月更是屈指可數(shù)(畢竟年輕嘛? ?(? ???ω??? ?)?? 。。。。),這個(gè)系列我就以geotools為主,分享的同時(shí)也是在提升自己在此方面的學(xué)識(shí)。
geotools在編寫(xiě)時(shí)對(duì)OGC標(biāo)準(zhǔn)進(jìn)行了相當(dāng)?shù)膶?shí)現(xiàn),其中相當(dāng)部分的基礎(chǔ)是基于JTS這個(gè)開(kāi)源包的。本篇從常用的一些OGC標(biāo)準(zhǔn)出發(fā),結(jié)合geotools來(lái)一起進(jìn)行相關(guān)介紹和學(xué)習(xí)。
我們就按照如下地址羅列的一些標(biāo)準(zhǔn)來(lái)講解吧?https://www.osgeo.cn/doc_ogcstd/?,完整的OGC標(biāo)準(zhǔn)有非常多的內(nèi)容具體可以到https://www.ogc.org/standards/?進(jìn)行查看。
開(kāi)篇前先說(shuō)下OGC標(biāo)準(zhǔn)是個(gè)啥,首先“Open Geospatial Consortium (OGC)開(kāi)放地理空間信息聯(lián)盟,他們?cè)谌蚍秶鷥?nèi)合作建立地理信息技術(shù)的開(kāi)放標(biāo)準(zhǔn)和最佳實(shí)踐,為地理信息交換的便捷提供技術(shù)支持。”,然后其實(shí)OGC這個(gè)組織所訂立的這個(gè)OGC標(biāo)準(zhǔn)吧,也不是什么強(qiáng)制性的標(biāo)準(zhǔn),大家都知道這個(gè)世界上做地理信息服務(wù)的企業(yè)so much,在當(dāng)前全球一體化的時(shí)代下,要是沒(méi)有一個(gè)統(tǒng)一的交互格式或者說(shuō)是標(biāo)準(zhǔn),那么各個(gè)服務(wù)商或者企業(yè)之間的數(shù)據(jù)(信息)的交互將會(huì)是困難的,所以在GIS的這個(gè)行業(yè)下,大家也都默默的參照了OGC標(biāo)準(zhǔn)進(jìn)行各種開(kāi)發(fā)個(gè)人覺(jué)得主要的目的之一也是為了方便各個(gè)廠商之間的數(shù)據(jù)進(jìn)行交互。好了,總之OGC標(biāo)準(zhǔn)的簡(jiǎn)單介紹就是這么簡(jiǎn)單,如果你還有疑問(wèn),很好,請(qǐng)自行百度進(jìn)行腦補(bǔ)。。。。
我們先看下本系列要介紹的內(nèi)容:
- 1. OGC標(biāo)準(zhǔn)介紹
- 1.1. I. OGC 與 OGC 標(biāo)準(zhǔn)
- 1.2. II. SFS-簡(jiǎn)單要素標(biāo)準(zhǔn)
- 1.3. III. GML-地理標(biāo)記語(yǔ)言
- 1.4. IV. SLD-圖層樣式描述
- 1.5. V. KML-我從 Google 來(lái)
- 1.6. VI. OWS-OGC Web 服務(wù)通用標(biāo)準(zhǔn)
- 1.7. VII. WFS-要素 Web 服務(wù)
- 1.8. VIII. WMS-地圖 Web 服務(wù)
- 1.9. IX. WCS-柵格 Web 服務(wù)
- 1.10. X. WMTS-切片地圖 Web 服務(wù)
- 1.11. XI. 附錄:ArcGIS 支持的 OGC 標(biāo)準(zhǔn)列表
- 2. OpenGIS中文文檔
- 2.1. 前言
- 2.2. 概述
- 2.3. 開(kāi)放GIS概述
- 2.4. 技術(shù)對(duì)象和目的
- 2.5. 信息行業(yè)地理處理交互性的基礎(chǔ)
- 2.6. 開(kāi)放GIS總體規(guī)范
1.1.Ⅰ我上面就算講完了。。。因?yàn)槭墙Y(jié)合geotools來(lái)看,我知道你們也更注重干貨,話不多說(shuō)直接1.2.Ⅱ SFS-簡(jiǎn)單要素標(biāo)準(zhǔn)。
SFS包含如下內(nèi)容:
- 1.2.1. 概述
- 1.2.2. 幾何對(duì)象模型
- 1.2.3. WKT 描述的幾何對(duì)象
- 1.2.4. WKB 描述的幾何對(duì)象
- 1.2.5. WKT 描述的空間參考
- 1.2.6. SQL 預(yù)定義 schema
- 1.2.7. SQL 幾何對(duì)象存儲(chǔ)
- 1.2.8. SQL 空間操作
這里面既是對(duì)常用的一些要素格式進(jìn)行描述。這是介紹中的幾何模型圖:
既然是參照了OGC標(biāo)準(zhǔn)進(jìn)行實(shí)現(xiàn),那么在geotools中自然也能找到對(duì)應(yīng)的實(shí)現(xiàn)類,在開(kāi)發(fā)商geotools的包可以去https://geotools.org/?中下載,當(dāng)然也可以去maven倉(cāng)庫(kù)中進(jìn)行配置。
從圖中我們可以知道Geometry是所有圖形內(nèi)的基類,首先從WKT開(kāi)始介紹:
| Type | Shape | WKT | GeoJSON |
| Point | ? | POINT (30 10) | { "type": "Point", "coordinates": [30, 10] } |
| LineString | ? | LINESTRING (30 10, 10 30, 40 40) | { "type": "LineString", "coordinates": [ [30, 10], [10, 30], [40, 40] ] } |
| Polygon | ? | POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)) | { "type": "Polygon", "coordinates": [ [[30, 10], [40, 40], [20, 40], [10, 20], [30, 10]] ] } |
| ? | POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), | { "type": "Polygon", "coordinates": [ [[35, 10], [45, 45], [15, 40], [10, 20], [35, 10]], [[20, 30], [35, 35], [30, 20], [20, 30]] ] } | |
| MultiPoint | ?? | MULTIPOINT ((10 40), (40 30), (20 20), (30 10)) | ? { "type": "MultiPoint", "coordinates": [ [10, 40], [40, 30], [20, 20], [30, 10] ] } |
| ? MULTIPOINT (10 40, 40 30, 20 20, 30 10) | |||
| ? MultiLineString | ? | ? MULTILINESTRING ((10 10, 20 20, 10 40), | ? { "type": "MultiLineString", "coordinates": [ [[10, 10], [20, 20], [10, 40]], [[40, 40], [30, 30], [40, 20], [30, 10]] ] } |
| ? MultiPolygon | ? | ? MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), | ? { "type": "MultiPolygon", "coordinates": [ [ [[30, 20], [45, 40], [10, 40], [30, 20]] ], [ [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] ] ] } |
| MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), | { "type": "MultiPolygon", "coordinates": [ [ [[40, 40], [20, 45], [45, 30], [40, 40]] ], [ [[20, 35], [10, 30], [10, 10], [30, 5], [45, 20], [20, 35]], [[30, 20], [20, 15], [20, 25], [30, 20]] ] ] } |
上面這張表我是從https://blog.csdn.net/xcymorningsun/article/details/89848096?里面借用過(guò)來(lái)的,WKT的格式當(dāng)然不僅限于上面這些,從第一張幾何模型圖中我們知道其實(shí)還包含諸多的類型。
我們知道構(gòu)建要素的基本單元是點(diǎn),在geotools中最基本的就是Coordinate類,這其實(shí)就是一個(gè)點(diǎn)相關(guān)的類,通過(guò)這個(gè)類我們可以去構(gòu)建Point,LineString等等,那么你可能就會(huì)問(wèn),既然是點(diǎn),為什么不直接用Point這個(gè)類還非要用Coordinate,從源碼上得出的結(jié)論就是,Coordinate類是獨(dú)立的存儲(chǔ)點(diǎn)信息,不包含坐標(biāo)系等空間參考內(nèi)容,而Point是Geometry的子類,且一個(gè)正常的Point類應(yīng)該是包含空間參考的信息的(當(dāng)然這不是使用這個(gè)類的必要條件):
好像有走遠(yuǎn)了,說(shuō)回WKT吧,從格式上可以看出Point對(duì)應(yīng)的WKT是單括號(hào)的也就是這樣?(30 10),那么基于點(diǎn)構(gòu)建的線是這樣(30 10, 10 30, 40 40),看出來(lái)沒(méi)有,線就是N個(gè)points的集合,因此一個(gè)線段是由最少兩個(gè)點(diǎn)構(gòu)成,x,y之間以一個(gè)空格分隔,點(diǎn)之間以逗號(hào)分隔,那么再看下面的構(gòu)建?((30 10, 40 40, 20 40, 10 20, 30 10)),在線的基礎(chǔ)上多套上了一個(gè)括號(hào),那么為什么會(huì)套上這層括號(hào)呢,別急再看下下面這個(gè)面的構(gòu)建POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),
(20 30, 35 35, 30 20, 20 30)),這個(gè)面是帶有孔的面,也就是中間被挖了一塊,通過(guò)雙括號(hào)的形式可以很好的區(qū)分出一個(gè)面是否有孔,且注意觀察,孔與面之間是有確切的順序的。隨著后續(xù)博文的講解,我會(huì)對(duì)要素的構(gòu)成及拆解情況進(jìn)行更深入的說(shuō)明,作為系列的開(kāi)頭本篇先暫止于此,后續(xù)的分享上我會(huì)注重于干貨的講解。
總結(jié)
以上是生活随笔為你收集整理的Geotools与OGC(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 韩顺平老师QQ离线消息
- 下一篇: OGC 网络数据服务的类型与操作+实现G