ArcMap制作区域地形图

本文介绍一些arcmap制作区域地形图的具体操作,以海南省为例,包括数据获取、镶嵌栅格、图形裁剪、添加图例、添加网格突出显示区域等具体操作。

最终效果图

         

一、软件工具准备

用到的软件:ArcMap10.8 

破解安装包(百度网盘):https://pan.baidu.com/s/1FkP10cF355bZJgYPdlGcYA?pwd=like

二、数据获取(地理空间数据云)

先去地理空间数据云官网地理空间数据云,点击“检索”,选择数据集(个人感觉主要是分辨率的差距,但都能满足日常使用)

选择空间位置,我这里是制作海南省的地理图,所以精确到省,如果要制作某个省份的市、县,则相应选择即可,后续操作都是一样的。

选好数据集合空间位置之后,点击检索,检索结果如下图所示:

我这里检索出来海南省的轮廓有两页。点击选中一个检索结果,会在地图上出现对应的方块。多次点击选中,直到方块把海南省的轮廓都囊括。最后点击下载,把每个轮廓文件都下载到本地。

下载之后是多个rar压缩包,把压缩包解压,每个压缩包包含一个后缀为.img,类型为光盘映像文件的文件。

我这里把每个压缩包里面的文件都剪切到同一个文件夹中,如下图所示:

三、镶嵌栅格

打开arcmap,点击添加数据“加号”按钮,把下载的文件全部导入

      导入数据 →    

可以看到,各个图片之间有明显的缝隙,接下来需要把图片之间的缝隙去掉,即使用“镶嵌”功能。

但因为arcmap版本的不同,网上关于“镶嵌”功能的教程有所差异。

先尝试在搜索工具栏中搜索“镶嵌”功能,如果有的话看下一步。没有的话则需要搜索“镶嵌至新栅格”,不外乎这两种查找方式。

我这里搜索不到“镶嵌”工具,但能搜索到“镶嵌至新栅格”工具,点击该功能。

输入栅格框,即把本地文件全部选中,添加进去

输出位置框——选一个空的文件夹。注意,这里一定要是空的文件夹,否则可能添加不成功。

像素类型框——先退出栅格功能,然后右键点击我们添加的数据,查看数据的属性,里面有具体的像素类型和像素深度。记住这两个属性值,然后再回到“镶嵌至新栅格”功能,在像素类型框里面选择对应的即可。

     

为输出的栅格数据集起个名,最好是英文,能避免许多bug,比如我这里起名“ShanGe_data”

波段数填写1即可。

以上填写之后,点击确定,系统已经开始执行,但没啥反应,这里需要稍等片刻,等待系统执行。以下是镶嵌后的结果,可以看到文件已经镶嵌成功,连接处没有缝隙:

然后保留镶嵌后得到的新栅格文件“ShanGe_data”,其他文件都可以删掉,突出简洁。

接下来我们为图像添加色带,区分海拔,突出美观:

四、裁剪、

我这里只需要海南省的行政区域轮廓,需要把上面的方块进行裁剪。

行政区域图数据获取

登录网页:DataV.GeoAtlas地理小工具系列,下载行政区域地形shp文件。

(shp文件简介)

SHP格式是一种矢量数据格式,用于存储地理信息系统(GIS)数据。
SHP文件由Esri公司开发,用于表示点、线和多边形等要素,并记录它们的坐标和属性信息。SHP格式通常用于存储和共享各种类型的GIS数据,如地图、地形、人口数据等。SHP文件通常由三个文件组成,分别是".shp"、".shx"和".dbf"文件。其中,"shp"文件包含实际的地理要素信息;"shx"文件是空间索引文件,用于加快查找和检索特定要素;"dbf"文件包含属性信息。

SHP文件由一系列有序的文件组成,这些文件包括.shp、.shx、.dbf以及.prj文件。

  1. .shp(shape)文件:存储矢量地图数据,记录了每个要素的空间位置信息。
  2. .shx(shape index)文件:是索引文件,用于存储.shp文件中要素的位置,加快数据访问速度。
  3. .dbf(dBase)文件:存储矢量数据的属性信息,例如地图上每个点的名称、类型等信息。
  4. .prj(projection)文件:是地图坐标系文件,其中包含地图投影的信息。

此外,SHP文件还可以有五个可选的文件,分别是:.ain、.crs、.csu、.ddd和.qix文件,可以增强空间数据的表达能力。

我们这里先在网页DataV.GeoAtlas地理小工具系列,搜索下载相应区域的json文件,然后在网站 mapshaper转换成shp文件压缩包,下载到本地。以下是具体操作截图:

然后来到mapsharmper网站:mapshaper

上传刚刚下载的json文件,选择sharpfile文件格式,导出。

(这里的mapshaper网站,可能需要开外网才能打开。没有外网的话,就在浏览器中搜索某区域的地理shp文件,大部分是在github上,都能轻易找到。)

导出得到一个Zip压缩文件,解压之后得到以下文件:

其中我们只用到.shp文件,但其他文件不能删除,它们是一个整体,删除之后会在arcmap中产生各种错误,比如无法导入数据。

回到arcmap中,同样点击导入数据按钮,将.shp文件导入。之后根据导入的shp文件进行裁剪。

导入shp文件之后,可以在左侧图层下看到该文件。鼠标右键该文件名称,点击标注要素,则会显示区域包含的地理名称。

鼠标单击文件下方的填充方块,可以选择填空颜色,以及“空心”——即不填充。

接下来进行根据行裁剪掉多余的地理区域:在系统工具中,数据管理——栅格——栅格处理——裁剪

保留裁剪之后输出的文件,删掉之前的文件,重新设置色带,稍作调整之后结果图:

五、根据经纬网添加点

我这里需要在图中标注出调研的6个农场和10个村庄。

如果有根据经纬网在地图上添加特殊点标注的需要,可以看以下步骤,没有的话可以跳过:

1、把地点汇总成Excel表格形式,总共四列,保存为.xls文件格式(.xlsx不可以直接导入arcmap中),XY分别表示精度和维度。具体如下图所示:

    

至于如何获取具体的经纬度,我这里调用是高德地图的api,编写Python代码,获取具体地点的数据。

高德地图api获取如下:

登录高德开放平台,点击右上角控制台

找到应用管理——我的应用,创建一个应用,便有相应的api

填写自己的api到下面代码,替换要查询的地点即可。如果地点过多,也可以利用Python对Excel文件进行处理,读取数据,生成地点列表。(关于获取地点的经纬度,还可以询问AI,AI也会提供代码和指导)

以下是获取某些区域具体经纬度的代码,把列表locations中的区域名称、api_key替换即可。

import requests
import pandas as pd

# 高德地图地理编码API URL
url = "https://restapi.amap.com/v3/geocode/geo"

# 自己的高德地图API密钥
api_key = "填写自己的高德api"


def get_location_coordinates(location_name, api_key):
    params = {
        "address": location_name,
        "key": api_key,
        "output": "JSON",
        "city": "",  # 可选参数,指定城市可以提高查询准确性
    }

    response = requests.get(url, params=params)
    if response.status_code == 200:
        result = response.json()
        if result["status"] == "1" and int(result["count"]) > 0:
            location = result["geocodes"][0]["location"]
            lng, lat = location.split(",")
            return float(lat), float(lng)
        else:
            print(f"Error: {result.get('info', 'Unknown error')}")
            return None, None
    else:
        print(f"HTTP Error: {response.status_code}")
        return None, None


locations = [
    "临高县多文镇红华居红华农场",
    "儋州市那大镇西联居西联农场",
    "琼中县湾岭镇乌石居乌石农场",
    "陵水县群英乡南平居牛岭农场",
    "琼海市万泉镇红升居红昇农场",
    "定安县黄竹镇南海居母瑞山农场",
]

# 创建一个空的DataFrame用于存储结果
df = pd.DataFrame(columns=["Location", "Latitude", "Longitude"])

for location in locations:
    lat, lng = get_location_coordinates(location, api_key)
    if lat and lng:
        df = df._append(
            {"Location": location, "Latitude": lat, "Longitude": lng}, ignore_index=True
        )

# 将DataFrame保存为Excel文件
output_file = "locations_coordinates.xlsx"
df.to_excel(output_file, index=False)

print(f"坐标已成功保存到 {output_file}")

接下来把Excel文件导入arcmap中,需要用到excel转表工具:

先在搜索栏中搜索excel,即可看到excel转表工具

然后右键转换成功的表,XY子段默认即可,点击确定

            ——→      

可以看到地点根据经纬度定位在了图上,同样在图层中,可以设置点的形状、大小和颜色:

注意(这个步骤中显示XY数据,我这里遇到问题,时灵时不灵,尚不清楚原因)

插入比例尺、指南针,使之更加美观:

六、利用网格线突出显示某些区域

我这里利用图层重叠原理,即导入三个海南省shp文件,便于理解,取个代号a,b,c吧。以a为底图,即显示真个海南省的行政区划。对b进行删除数据操作,保留要突出显示的区域名称,画上 /  即45度方向的斜线。然后在c中进行同样的删除数据操作,保留与b中一样的区域名称,画上 \ 即-45度方向的斜线。这样重叠在图层a上,便形成了网格线,突出显示需要的区域。

注意,我这里把海南省shp文件复制几份,分别放到不同的文件夹中,然后导入arcmap。为什么这样操作呢?因为我这里如果是在同一个文件夹中,对abc中某个文件进行操作,可能会连带操作其他两个文件,但我需要对abc这三个文件进行不同的操作,放入不同文件夹中能解决这个问题。

以下是具体操作:

先删减数据,右键文件打开属性表,进行删减数据操作。

以上如果删除按钮“×”是灰色的,无法操作,是因为没有在编辑状态下操作。需要右键图层中的该文件——编辑要素——开始编辑,这样便能进行删除操作。

选择删除之后结果如下,以下两个文件数据(b,c)是一样的,只是操作方法,即画的斜线不同:

文件a的数据:

接下来为删除后保留的区域添加网格线:

最终效果图:

七、行政区域图用不同颜色填充

效果图:

以上就是大致的全部内容。由于步骤繁多,但关键步骤我都有说明。按照步骤进行,在arcmap中再根据实际进行探索,应该都能实现相应功能。

过程中可能遇到的错误,我的经验教训,结合网上的教程,我都有所记录说明。

文中内容难免有所疏漏和细节瑕疵,欢迎评论指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值