查看原文
其他

【GIS实验教程】如何计算指定多个城市的河流总长度

走天涯徐小洋 走天涯徐小洋地理数据科学 2022-05-17

实例教程:如何选取18个指定的城市,并计算18个市的河流长度呢?

河流与市求交集

根据城市计算河流长度
  1. 筛选市的矢量,按属性选择市,选取对应的18个市
"市" = '无锡市' OR "市" = '扬州市' OR "市" = '徐州市' OR "市" = '湖州市' OR "市" = '苏州市' OR "市" = '合肥市' OR "市" = '连云港市' OR "市" = '宿迁市' OR "市" = '嘉兴市' OR "市" = '南京市' OR "市" = '杭州市' OR "市" = '十堰市' OR "市" = '遵义市' OR "市" = '宜昌市' OR "市" = '宜宾市' OR "市" = '淮安市' OR "市" = '重庆市' OR "市" = '阜阳市'
按属性选择
  1. 使用相交(Intersect)获取市矢量和河流矢量的交集
相交获取市和河流的交集
相交后的属性表每段河流都带有所在地级市信息
  1. 图形处理基本完成,但是由于数据是国家2000坐标系,地理坐标系,如果想获得河流长度,需要进行投影,这个时候需要将地理坐标系转换为投影坐标系

坐标系转换

坐标系的选择

我们使用的数据来源于国家基础地理数据库,使用的是国家2000地理坐标系,单位为度,为了计算距离,我们应该使用等距离投影进行计算。

全国1:100W地理数据库的制作与合成

我国的基础地理数据为国家2000坐标系,在ArcGIS中只有高斯克吕格投影的CGCS2000投影坐标系,高斯克吕格投影有三度带和六度带,而研究区地跨整个长江流域,所以我们需要使用大范围的投影,但是在ArcGIS里面没有这个时候就需要我们自定义一下投影

选择投影,复制和修改投影参数

投影参数我进行了如下的修改:

  1. 我选择了亚洲区域的等距离投影,在此基础进行修改
  2. 研究区位于东经100-125范围内,为了减小变形,我中央子午线设置为115度
  3. 椭球的设置,地理坐标系选择CGCS2000,也就是原始数据使用的地理坐标系
修改投影参数

设置完成后,就可以将国家2000地理坐标系转为等距离投影了,计算后矢量长度单位为米。

地理坐标系转投影坐标系

更多坐标系知识请参阅下面文章:

GIS基础教程之坐标系

将投影后的数据属性表导出,到EXCEL中进行计算,导出的时候推荐导出为文本型,默认是txt后缀名,为了打开方便,建议手动修改为.csv

输出csv文本属性表

河流分城市长度计算

ArcGIS导出属性表乱码

ArcGIS导出的属性表,默认一般为UTF-8编码,而windows系统一般使用的是ANSI,直接EXCEL会发现是乱码

EXCEL打开属性表乱码

建议使用NOTEPAD++打开,然后转换编码,编码-转为ANSI编码,这样就能够让EXCEL识别了。

数据透视表计算分市河流长度

选取市、河流长度(Shape_Length)所在的列,建立数据透视表

建立数据透视表

数据透视表行选择“市”字段,求和项:SHAPE_Length,这样就计算得到了每个市的河流长度,单位为米。

对各个市的河流长度求和

如果觉得不错还请转发分享哦,转发朋友圈集赞15个,截图发送公众号,即可获取公众号练习资料

有疑问或者更好的想法可以留言讨论哦

欢迎投喂徐小洋鸡腿,点赞,在看


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存