3 Star 4 Fork 3

freewu/QtMap

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
map_loader.cpp 1.64 KB
一键复制 编辑 原始数据 按行查看 历史
freewu32 提交于 2016-11-04 18:09 . 添加项目
#include "map_loader.h"
void MapLoader::loadDataForFile(QFileInfo fileInfo)
{
GDALDataset* data_set=(GDALDataset*) GDALOpenEx(
fileInfo.absoluteFilePath().toLatin1().data(), GDAL_OF_VECTOR, NULL, NULL, NULL );
if (data_set!=nullptr){
for(int i=0;i<data_set->GetLayerCount();i++){
OGRLayer* layer = data_set->GetLayer(i);
layer->ResetReading();
OGRFeature *feature;
while((feature=layer->GetNextFeature())!=nullptr){
OGRGeometry *geometry = feature->GetGeometryRef();
OGRSpatialReference oSRS;
//设置名称,无意义
oSRS.SetProjCS( "UTM 17(WGS84) in northern hemisphere." );
//设置地理坐标系
oSRS.SetWellKnownGeogCS( "WGS84" );
oSRS.SetUTM(17,true);
if (geometry->getGeometryType()==wkbPolygon){
OGRPolygon* polygon=(OGRPolygon*)geometry;
matchPolygon(polygon);
}
}
}
}
delete data_set;
data_set=nullptr;
}
void MapLoader::matchPolygon(OGRPolygon *polygon)
{
//闭合多边形
polygon->closeRings();
//计算外环
OGRLinearRing* linearRing=polygon->getExteriorRing();
QPainterPath path;
for(int i=0;i<linearRing->getNumPoints();i++){
double x=linearRing->getX(i);
double y=linearRing->getY(i);
if (i==0){
path.moveTo(QPointF(x,y));
}else{
path.lineTo(QPointF(x,y));
}
}
MapWidget::pathList->push_back(path);
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/free1234566789/QtMap.git
git@gitee.com:free1234566789/QtMap.git
free1234566789
QtMap
QtMap
master

搜索帮助