如何将一个图/边列表转换成一个shapefile (.shp) ?

20视图(30天)
Sim卡
Sim卡 2022年7月6日
编辑: Sim卡 2022年7月11日
如何将一个 /边缘成一个列表 shapefile (.shp) 吗?
这图“G”的一个例子,用Matlab建立:
s = [1 1 2 2 2 3 3 3];
t = (2 3 3 4 5 6 7 5);
x = [0 0 3 1 0 4 1];
y = [0 1 0 4 5 0 1);
图G = (s, t);
G.Nodes。X = X ';G.Nodes。Y = Y ';
情节(G,“XData”G.Nodes.X,“YData”G.Nodes.Y)

答案(2)

克里斯汀Tobler
克里斯汀Tobler 2022年7月6日
没有一个直接的方法一个图形对象。映射工具箱有 shapewrite 函数产生一个.shp文件,但它首先需要把这些向量到它的一个数据结构(geolineshape或maplineshape可能是正确的)。

Sim卡
Sim卡 2022年7月11日
编辑:Sim卡 2022年7月11日
@Christine Tobler 因为我不懂如何执行的步骤你建议…
% Matlab图形——> geolineshape或maplineshape——> shapewrite
…我使用一个解决方法,即进口边列表和x - y -节点坐标 QGIS (免费和开源跨平台桌面地理信息系统应用程序,支持查看、编辑、印刷、和分析地理空间数据),可以创建一个shapefile。万博1manbetx
多亏了 GIS stackexchange社区 ,我用以下方法。
首先,去QGIS的Python控制台的编辑:
%开放QGIS - - >插件- - > Python控制台- - >显示编辑器
然后,复制并粘贴以下代码(只是更改路径,保存您的shapefile):
#(1)创建一层在QGIS
s_list = [1, 1、2、2、2、3、3、3]
t_list = [2、3、3、4、5、6、7、5]
x_list = [0, 0, 1, 0、4、3、1]
y_list = [0 1 0、4、5, 0, 1]
坐标=列表(zip (x_list y_list))#生成列表的列表包含每个顶点的x和y坐标
层= QgsVectorLayer (“LineString ? crs = EPSG: 4326”,“层”,“记忆”)
layer.startEditing ()
年代,e在zip (s_list t_list): #循环以为列表的列表包含开始和结束的顶点坐标列表中的索引
特点= QgsFeature ()
开始= QgsPointXY(*坐标(s - 1))#开始
结束= QgsPointXY(*坐标(e - 1))#结束
feature.setGeometry (QgsGeometry () .fromPolylineXY((开始、结束)))#QgsFeature的几何对象
layer.addFeature(功能)#添加功能层
layer.commitChanges ()
QgsProject.instance () .addMapLayer(层)
#(2)保存层的shapefile
QgsVectorFileWriter.writeAsVectorFormat (
层,
“路径/ /你/ matlab_graph.shp”,#这里的路,你的文件包括文件扩展名
“utf - 8”,#文件编码
QgsCoordinateReferenceSystem (“EPSG: 4326”),#在引用了crs id
“ESRI Shapefile”#这里的矢量驱动程序
)
一旦shapefile保存在你的文件夹,你可以打开在Matlab shapefile:
%阅读shapefile
一个= shaperead (“matlab_graph.shp”);
%提取边缘的坐标
x_tmp = vertcat (A.X);
y_tmp = vertcat (A.Y);
x = x_tmp (:, 1:2);
y = y_tmp (:, 1:2);
%绘制shapefile
情节(x, y’,“线宽”,2)
xlim ([5])

类别

找到更多的在三角表示帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!