作为开源软件的受益者,在享受开源带来的技术便利同时,我们也积极拥抱开源,同时也回馈开源。城市交通指数(TTI)作为公司第16个开源项目,通过盖亚计划对外开放了脱敏数据,下载人员分布于127个高校或科研机构,覆盖了70%的双一流高校。
在地图数据处理中,能经常看到开源软件的身影,常见的有以下几项:
- GDAL (Geospatial Data Abstraction Library)
GDAL是一个在X/MIT许可协议下的空间栅格数据转换库,OGR是GDAL项目的一个分支,其提供对矢量数据的支持。栅格数据和矢量数据是地图数据中两种较为常见的数据格式,通俗的理解,栅格数据用像素来表达,矢量数据用坐标点来表达。常见的栅格数据有遥感影像、扫描地图等。常见的矢量数据有各种点、线、面数据,如POI、路网、水系或湖泊。GDAL可以很方便的对栅格或矢量数据进行读写操作。
GDAL读取遥感影像示例代码:
GDALDataset* pDataSet = (GDALDataset*)GDALOpen("/Users/didi/Desktop/test.img",GA_ReadOnly);
//仿射变换6参数
double geoTransform[6] = {0};
pDataSet->GetGeoTransform(geoTransform);
//影像宽
int nWidth = pDataSet->GetRasterXSize();
//影像高
int nHeight = pDataSet->GetRasterYSize();
//像素值矩阵
unsigned char* pPixelValue = (unsigned char *)malloc(sizeof(unsigned char) * nWidth * nHeight);
memset(pPixelValue,0,nWidth * nHeight);
CPLErr err = pDataSet->RasterIO(GF_Read,0,0,nWidth,nHeight,pPixelValue,nWidth,nHeight,GDT_Byte,1,NULL,0,0,0);
free(pPixelValue);
GDALClose(pDataSet);
GDAL中有一些很实用的图像处理算法,如GDALSimpleSURF类可以实现特征点检测以及匹配,GDALSieveFilter可以删除4连通或8连通的像素多边形(具有相同像素值的连通区域),如砂眼噪声。如下图所示
图1 处理前
图2 处理后
OGR读取矢量数据示例代码:
GDALDataset* pDS = (GDALDataset*) GDALOpenEx("/Users/didi/Desktop/test.shp", GDAL_OF_VECTOR | GDAL_OF_READONLY, NULL, NULL, NULL );
OGRLayer* pLayer = pDS->GetLayer(0);
OGRFeature *pFeature = NULL;
pLayer->ResetReading();
while((pFeature = pLayer->GetNextFeature()) != NULL ){
//获取几何信息
OGRGeometry* pGeom =

本文详细介绍了开源GIS软件在地图数据处理中的应用,包括GDAL、OGR、GEOS、Proj.4、libSpatialindex、SpatiaLite、PCL、PostGIS、GeoServer、OpenLayers、Mapbox、QGIS、Mapnik、GRASS GIS等工具的使用,展示了它们在地理坐标转换、空间查询、3D点云处理、路径规划等方面的重要作用。
最低0.47元/天 解锁文章
1058

被折叠的 条评论
为什么被折叠?



