各类图形库创建图层的方式示例

不同的图形库和地理信息系统(GIS)软件提供了不同的方式来创建图层。以下是一些常见的图形库和GIS软件的创建图层的方式和示例代码:

1. **使用GDAL/OGR库**:
   GDAL(Geospatial Data Abstraction Library)和OGR(Simple Features Library)是用于读写地理空间数据的库。你可以使用它们来创建图层并写入地理空间数据。

   示例代码(C++):
   ```cpp

  #include "gdal/ogr_api.h"

   int main() {
       // 创建一个源
       OGRRegisterAll();
       OGRDataSource *poDS = OGRSFDriverRegistrar::Open("data_source_name", TRUE);

       // 创建一个图层
       OGRLayer *poLayer = poDS->CreateLayer("layer_name", NULL, wkbPoint, NULL);

       // 添加
       OGRFieldDefn oField("field_name", OFTString);
       oField.SetWidth(32);
       poLayer->CreateField(&oField);

       // 创建要素并写入图
       OGRFeature *poFeature = OGRFeature::CreateFeature(poLayer->GetLayerDefn());
       poFeature->SetField("field_name", "field_value");
       OGRPoint pt;
       pt.setX(1.0);
       pt.setY(1.0);
       poFeature->SetGeometry(&pt);
       poLayer->CreateFeature(poFeature);

       // 释放资源       OGRFeature::DestroyFeature(poFeature);
       OGRDataSource::DestroyDataSource(poDS);
       
       return 0;
   }
   ```

2. **使用Python的Fiona库**:
   Fiona是Python中用于读写地理空间数据的库,它可以与GDAL/OGR一起使用来创建图层并写入地理空间数据。

   示例代码(Python):
   ```python  

import fiona
   from fiona.crs import from_epsg

   # 创建图层
   schema = {
       'geometry': 'Point',
       'properties': {'name': 'str'}
   }
   with fiona.open('output.shp', 'w', 'ESRI Shapefile', schema, crs=from_epsg(4326)) as layer:
       # 添加要素
       point = {
           'type': 'Point',
           'coordinates': (1.0, 1.0)
       }
       layer.write({
           'geometry': point,
           'properties': {'name': 'example'}
       })
   ```

3. **使用QGIS软件**:
   在QGIS软件中,你可以通过界面操作或者使用Python脚本来创建图层。

   示例代码(Python):
   ```python

  from qgis.core import QgsVectorLayer, QgsField, QgsPoint, QgsFeature, QgsGeometry

   # 创建图层
   layer = QgsVectorLayer("Point", "layer_name", "memory")
   pr = layer.dataProvider()
   pr.addAttributes([QgsField("name",  QVariant.String)])
   layer.updateFields()

   # 添加素
   feature = QgsFeature()
   feature.setGeometry(QgsGeometry.fromPointXY(QgsPoint(1.0, 1.0)))
   feature.setAttributes(["example"])
   pr.addFeature(feature)

   # 刷新地图
   layer.updateExtents()
   QgsProject.instance().addMapLayer(layer)
   ```

未完待续……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1号程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值