用gdal实现将shp文件中的shape字段转成wkt

public List<string> ShptoWkt(string path)
        {
            List<string> list = new List<string>();
            string wkt = "";

            OSGeo.OGR.Ogr.RegisterAll();
            OSGeo.OGR.Driver dr = OSGeo.OGR.Ogr.GetDriverByName("ESRI shapefile");

            if (dr == null)
            {
                return list;
            }

            OSGeo.OGR.DataSource ds = dr.Open(path, 0);
            int layerCount = ds.GetLayerCount();

            OSGeo.OGR.Layer layer = ds.GetLayerByIndex(0);

            //投影信息
            OSGeo.OSR.SpatialReference coord = layer.GetSpatialRef();
            string coordString;
            coord.ExportToWkt(out coordString);

            OSGeo.OGR.Feature feat;
            //string contentString = "";
            //读取shp文件
            while ((feat = layer.GetNextFeature()) != null)
            {
                OSGeo.OGR.Geometry geometry = feat.GetGeometryRef();
                OSGeo.OGR.wkbGeometryType goetype = geometry.GetGeometryType();
                geometry.ExportToWkt(out wkt);
                list.Add(wkt);
            }
            return list;
        }

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java版本的GDAL库可以很方便地实现TIF文件转换为SHP文件。你可以按照以下步骤操作: 1. 下载并安装Java版的GDAL库。可以从官方网站或者GitHub上下载。 2. 导入所需的库文件到Java项目。根据需要,你可能需要导入gdal.jar、jniwrap-3.8.5.jar及其所依赖的所有库文件。 3. 写一个Java程序来完成TIF文件转换为SHP文件。以下是一个示例代码: ``` import org.gdal.gdal.gdal; import org.gdal.ogr.DataSource; import org.gdal.ogr.ogr; public class Tif2Shp { public static void main(String[] args) { //设置GDAL_DATA环境变量 System.setProperty("GDAL_DATA", "你的GDAL_DATA路径"); //初始化GDALgdal.AllRegister(); ogr.RegisterAll(); //读取TIF文件 String tifFile = "你的TIF文件路径"; Dataset tifDataset = gdal.Open(tifFile); //将TIF文件转换为SHP文件 String shpFile = "你的SHP文件路径"; DataSource shpDataSource = ogr.GetDriverByName("ESRI Shapefile").CreateDataSource(shpFile); Layer shpLayer = shpDataSource.CreateLayer("layerName", null, ogr.wkbPolygon); //将TIF文件的多边形图层写入SHP文件 Layer polygonLayer = tifDataset.GetLayerByName("polygonLayerName"); shpLayer.CreateFields(polygonLayer.GetLayerDefn()); shpLayer.StartTransaction(); Feature feature; while ((feature = polygonLayer.GetNextFeature()) != null) { shpLayer.CreateFeature(feature); feature.delete(); } shpLayer.CommitTransaction(); //关闭文件 shpDataSource.delete(); tifDataset.delete(); } } ``` 通过以上代码,你就可以使用Java版本的GDAL实现TIF文件转换为SHP文件了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值