如何在 QGIS 中使用 WKT 绘制多边形?

5

我有一个CSV文件,其中数据字段包含以下类似的数据

POLYGON ((79.87749999947846 6.997500000409782, 79.88249999947845 6.997500000409782, 79.88249999947845 7.002500000409782, 79.87749999947846 7.002500000409782, 79.87749999947846 6.997500000409782))

我想在QGIS中使用此数据字段绘制多边形。我该如何做?

3个回答

12
例如,我有一个包含两个列“Id”和“geom”的csv文件,其中geom包含您的POLYGON示例。

enter image description here

前往图层->添加图层->添加分隔文本图层,浏览csv文件并在几何字段下拉框中选择包含WKT数据的列,例如我的是"geom",然后在几何定义中选择(WKT)选项

enter image description here

结果为:

enter image description here

另一种方式是使用Python:

uri ='file:///C://Users//fjraga//Desktop//test.csv?delimiter=%s&crs=epsg:4326&wktField=%s' % (",", "geom")
lyr = QgsVectorLayer(uri, 'Test','delimitedtext')
QgsMapLayerRegistry.instance().addMapLayer(lyr)

但如果您只想在QGIS Python控制台中加载此WKT几何图形,请尝试以下方法:

wkt = "POLYGON ((79.87749999947846 6.997500000409782, 79.88249999947845 6.997500000409782, 79.88249999947845 7.002500000409782, 79.87749999947846 7.002500000409782, 79.87749999947846 6.997500000409782))"

temp = QgsVectorLayer("Polygon?crs=epsg:4326", "result", "memory")
QgsMapLayerRegistry.instance().addMapLayer(temp)

temp.startEditing()
geom = QgsGeometry()
geom = QgsGeometry.fromWkt(wkt)
feat = QgsFeature()
feat.setGeometry(geom)
temp.dataProvider().addFeatures([feat])
temp.commitChanges()

1
谢谢 - 在将QgsMapLayerRegistry.instance更改为QgsProject.instance后,Python代码在QGIS 3.x中运行成功。 - Baswein

2
你将文本复制到剪贴板中。
然后:
  1. 打开QGIS
  2. 打开“编辑”菜单
  3. 进入“插入对象”/“插入要素”子菜单
  4. 选择矢量或临时图层
  5. 选择正确的坐标系统
完成了。
就是这么简单。

0

使用Well-known text (WKT)从剪贴板创建新图层

可以将剪贴板上的要素粘贴到新图层中。为此,请选择一些要素,将它们复制到剪贴板中,然后使用“编辑”->“粘贴要素为”->并选择:

新矢量图层...:保存矢量图层对话框出现(有关参数,请参阅从现有图层创建新图层)

或临时刮擦图层...:您需要为该图层提供一个名称

将创建一个新图层,其中包含选定要素及其属性(并添加到地图画布)。

注意

使用well-known text (WKT)定义几何体的情况下, 在QGIS内部以及从另一个应用程序中选择和复制要素都可以从剪贴板创建图层。

Reference: https://docs.qgis.org/3.10/en/docs/user_manual/managing_data_source/create_layers.html#creating-new-layers-from-the-clipboard


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接