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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ERROR 6: GEOS support not enabled.

發布時間:2023/12/2 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ERROR 6: GEOS support not enabled. 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要學習GEOS庫,肯定繞不開地理方面的東西。如果需要判斷的兩個多邊形或幾何圖形,不是自己創建的,而是來自shapefile文件,那就得將GEOS庫和GDAL/OGR庫結合使用了。實際上只需要OGR就行了,但OGR和GDAL是放在一起的。OGR庫用來讀取和輸出shapefile(shp)文件,geos庫用來判斷空間關系。

需要注意的地方:OGR里面的幾何圖形類OGRGeometry和GOES里面的類Geometry基本上是一樣的,函數也大體相同。OGRGeometry類里面也有類似于Disjoint(),Touches(),Overlaps()這樣的函數。但是這些函數是花架子,沒有GEOS庫的支持是用不成的。如果只有OGR庫而沒有GEOS庫,運行這些函數就會提示GEOS support not enabled.這樣的錯誤,也得不到正確的結果。

在OGR的官方文檔中,對Overlaps()函數有這樣一句話描述:This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

大致意思就是這個函數是建立在GEOS庫的基礎上,沒有GEOS庫的支持,這個函數運行會出錯。

1、編譯GEOS。參考http://www.cnblogs.com/denny402/p/4966558.html

2、編譯GDAL. 參考http://www.cnblogs.com/sansan/p/3394636.html,注意要先編譯GEOS,再編譯GDAL,不然會提示找不到geos_c_i.lib這個庫。

編譯并設置好后,就可以開始代碼測試了。

本例的數據及工具版本:

GDAL/OGR: 2.0.0

GEOS: 3.5.0

shp文件:中國國界和省界SHP文件 ,可點此下載

至于SHP文件的讀取,可參考?http://www.cnblogs.com/denny402/p/4959867.html

測試代碼:

#include "stdafx.h" #include <iostream> #include "ogrsf_frmts.h" using namespace std;int _tmain(int argc, _TCHAR* argv[]) {GDALAllRegister();GDALDataset *poDS;CPLSetConfigOption("SHAPE_ENCODING",""); //解決中文亂碼問題//讀取shp文件poDS = (GDALDataset*) GDALOpenEx("d:/shp/province.shp", GDAL_OF_VECTOR, NULL, NULL, NULL );if( poDS == NULL ){printf( "Open failed.\n%s" );exit( 1 );}OGRLayer *poLayer;poLayer = poDS->GetLayer(0); //讀取層poLayer->ResetReading();OGRFeature *poFeature1,*poFeature2,*poFeature3;poFeature1=poLayer->GetFeature(205); //四川省poFeature2=poLayer->GetFeature(0); //黑龍江省poFeature3=poLayer->GetFeature(66); //青海省OGRGeometry *p1=poFeature1->GetGeometryRef();OGRGeometry *p3=poFeature2->GetGeometryRef();OGRGeometry *p2=poFeature3->GetGeometryRef();cout<<p1->IsEmpty()<<endl //圖形是否為空<<p1->IsSimple()<<endl //是否是單個幾何圖形<<p1->getGeometryType()<<endl //幾何圖形的類型,polygon返回3<<p1->getGeometryName()<<endl //幾何圖形的名稱<<p1->getDimension()<<endl //圖形的維度<<p1->getCoordinateDimension()<<endl //坐標的維度<<p1->getSpatialReference()<<endl; //空間參考if(p2->Disjoint(p1))cout<<"不相交"<<endl;else{if(p2->Touches(p1))cout<<"接觸"<<endl;else if(p2->Overlaps(p1))cout<<"部分重疊"<<endl;else if(p2->Contains(p1))cout<<"包含"<<endl;elsecout<<"unknown"<<endl;}system("pause");return 1; }

總結

以上是生活随笔為你收集整理的ERROR 6: GEOS support not enabled.的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。