GDAL - 그리드 벡터
5393 단어 GIS
최근에 학생들을 도와 몇 개의 작은 프로그램을 썼는데, 이는 GDAL로 격자 데이터의 벡터 데이터를 실현하는 것을 포함한다.인터넷에 관련 글이 많지 않고 대부분 버전 등 일련의 원인으로 인해 버그가 많다.나는 관련 글과 GDAL 홈페이지의 함수 설명을 참고하여 완전한 프로그램을 쓰고 기록했다.
코드
#include "gdal_priv.h"
#include "ogrsf_frmts.h" //for ogr
#include "gdal_alg.h" //for GDALPolygonize
int Raster2Vector(const char * pszSrcFile, const char* pszDstFile, const char* pszFormat);//
int main()
{
const char* pszSrcFile = "C:\\Users\\liuwei\\Desktop\\2.jpg";//
const char* pszDstFile = "C:\\Users\\liuwei\\Desktop\\shp\\out.shp";//
Raster2Vector(pszSrcFile, pszDstFile, "ESRI Shapefile");
return 0;
}
int Raster2Vector(const char * pszSrcFile, const char* pszDstFile, const char* pszFormat)
{
GDALAllRegister();//
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");//
GDALDataset* poSrcDS = (GDALDataset*)GDALOpen(pszSrcFile, GA_ReadOnly);
if (poSrcDS == NULL)
{
return 0;
}
// Shapefile
GDALDriver *poDriver;
poDriver = GetGDALDriverManager()->GetDriverByName(pszFormat);
if (poDriver == NULL)
{
printf("%s driver not available.
", pszFormat);
exit(1);
}
//
GDALDataset* poDstDS = poDriver->Create(pszDstFile, 0, 0, 0, GDT_Unknown, NULL);
if (poDstDS == NULL)
{
printf("Creation of output file failed.
");
exit(1);
}
// ,
OGRSpatialReference *poSpatialRef = new OGRSpatialReference(poSrcDS->GetProjectionRef());
if (poSpatialRef == NULL)
{
return 0;
}
OGRLayer* poLayer = poDstDS->CreateLayer("DstLayer", poSpatialRef, wkbPolygon, NULL);//
if (poDstDS == NULL)
{
GDALClose(poSrcDS);
GDALClose(poDstDS);
delete poSpatialRef;
return 0;
}
OGRFieldDefn oField("value", OFTInteger);// , “value”,
if (poLayer->CreateField(&oField) != OGRERR_NONE)
{
printf("Creating Name field failed.
");
exit(1);
}
GDALRasterBandH hSrcBand = (GDALRasterBandH)poSrcDS->GetRasterBand(1); //
GDALPolygonize(hSrcBand, NULL, (OGRLayerH)poLayer, 0, NULL, NULL, NULL); //
GDALClose(poSrcDS); //
GDALClose(poDstDS);
return 1;
}
설명
1. 그리드 벡터는 GDAL 라이브러리를 사용하여 이루어진 것으로 GDAL 환경 설정은 다음과 같은 블로그를 참고할 수 있다. GDAL 환경 설정.2. 관건은 GDALPolygonize()라는 격자 벡터화 함수로 GDAL 홈페이지 Files 디렉터리 gdalalg.h에서 함수 상세 정보를 보십시오.3. 인터넷 GDAL 자료가 들쭉날쭉하니 직접 홈페이지에 가서 관련 클래스와 함수를 확인하는 것을 권장합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GPS 데이터를 사용하여 모양 파일 만들기지금까지 1/2500의 종이의 도시 계획도나 GoogleMap를 스캔해 현장 셰이프 파일(폴리곤)을 작성하고 있었습니다. 올해부터 RTK-GPS로 cm정도의 위치 데이터를 잡을 수 있었으므로 이것을 바탕으로(올 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.