作为开源软件的受益者,在享受开源带来的技术便利同时,我们也积极拥抱开源,同时也回馈开源。城市交通指数(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 处理前
![v2-118f26a261973668dfb61ef7320a3d3d_b.jpg](https://img-blog.csdnimg.cn/img_convert/594dc491310ab614ab002a12988ee599.png)
图2 处理后
![v2-6c62d135b8ff7b5903afdba1ff2f9822_b.jpg](https://img-blog.csdnimg.cn/img_convert/d05c7f35fba70ad2b6bed1bfcb54dbaf.png)
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 = pFeatur