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