日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

根据数据使用arcGIS画分级图

發(fā)布時(shí)間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 根据数据使用arcGIS画分级图 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

根據(jù)數(shù)據(jù)使用arcGIS畫分級(jí)圖

  • 需求
  • 分析
  • 準(zhǔn)備
  • 需求實(shí)現(xiàn)
  • 數(shù)據(jù)處理
  • 成品
  • 相關(guān)文件下載
      • 百度網(wǎng)盤鏈接
      • 阿里云盤鏈接
  • 參考

需求

需求:受一位朋友所托,需要畫一張圖:底層是中國(guó)地圖,在其上按照不同年份填充不同顏色的城市,示例如下圖所示。

年份信息如下表所示:

分析

看到這個(gè)需求我的第一反應(yīng)是用echarts畫圖。echarts是一款基于JavaScript的數(shù)據(jù)可視化圖表庫(kù),提供直觀,生動(dòng),可交互,可個(gè)性化定制的數(shù)據(jù)可視化圖表。它的長(zhǎng)處在展示和交互,但是僅有有限的定制模式,無(wú)法滿足定制化的需求。所以,這條路不行。

Excel也有強(qiáng)大的畫圖能力,但是“你所在的位置不支持地圖圖標(biāo)”,所以這條路也不行。

經(jīng)過(guò)搜索,我發(fā)現(xiàn)ArcGIS,它具有強(qiáng)大的地圖制作、空間數(shù)據(jù)管理、空間分析、空間信息整合、發(fā)布與共享的能力。所以在定制化需求方面,絕對(duì)是滿足要求的。缺點(diǎn)也很明顯,這是一款專業(yè)的軟件,有它自己的規(guī)則和學(xué)習(xí)門檻,對(duì)于外行并不友好。由于沒有更好的辦法,只能硬著頭皮上。

準(zhǔn)備

在查看相關(guān)博客之后,確定了接下來(lái)推進(jìn)路線。接下來(lái)需要一個(gè)實(shí)驗(yàn)環(huán)境。我用VMware創(chuàng)建了一個(gè)Windows10虛擬機(jī),并用網(wǎng)上下載的ArgGIS10.2安裝包安裝ArgGIS環(huán)境。接下來(lái),搜索基礎(chǔ)的地圖庫(kù)。

找數(shù)據(jù):國(guó)家基礎(chǔ)地理信息中心、百度網(wǎng)盤鏈接、地圖選擇器。這是很重要的一步,我們不可能從零畫地圖,因此需要使用現(xiàn)成的數(shù)據(jù)。
1、國(guó)家基礎(chǔ)地理信息中心是官方數(shù)據(jù)源,但是全是數(shù)字,作為新手很難上手處理,pass。
2、我從百度網(wǎng)盤鏈接找到了所需要的基礎(chǔ)數(shù)據(jù),包括省、地級(jí)市行政區(qū)劃。
3、地圖選擇器。這里使用的是阿里云的DataV.GeoAtlas。如下圖所示,默認(rèn)顯示中國(guó)地圖,當(dāng)鼠標(biāo)放在某個(gè)省份(或自治區(qū)、直轄市)之上時(shí)對(duì)應(yīng)區(qū)域會(huì)變色,點(diǎn)擊則會(huì)選中對(duì)應(yīng)區(qū)域。點(diǎn)擊右側(cè)“其他類型”下第一行下載按鈕將下載該區(qū)域?qū)?yīng)的json數(shù)據(jù)。
以河南省為例,我們大概瀏覽一下json數(shù)據(jù)內(nèi)容。如下圖所示,每一個(gè)省級(jí)單位主要數(shù)據(jù)內(nèi)容在features里,共18項(xiàng),對(duì)應(yīng)18個(gè)地級(jí)市。每一個(gè)feature里,properties里的name字段表示地級(jí)市名稱。

需求實(shí)現(xiàn)

按照需求,需要將滿足某條件的地級(jí)市按照年份分類并著色。那么如何從數(shù)據(jù)的角度按照這個(gè)標(biāo)準(zhǔn)對(duì)地級(jí)市分類呢?

可能方法1:將地級(jí)市分類,使用arcGIS分級(jí)著色。
可能方法2:將每一類(對(duì)應(yīng)需求的每一年度)地級(jí)市數(shù)據(jù)匯總,arcGIS每一個(gè)圖層上色都不一樣,自動(dòng)完成需求。

理論上來(lái)說(shuō)兩種方法都可行。限于手頭數(shù)據(jù),首先嘗試了可能方法2。前面提到的河南省地圖數(shù)據(jù)json文件,里面包含了每一個(gè)地級(jí)市對(duì)應(yīng)的地圖信息。通過(guò)代碼實(shí)現(xiàn)可以將全國(guó)的地級(jí)市匯總到一個(gè)總文件里。然后按照不同分類,從總文件里篩選對(duì)應(yīng)的地級(jí)市地圖數(shù)據(jù)并生成分類json文件(每一年度地級(jí)市json文件)。這些json格式上和原始的河南省地圖數(shù)據(jù)json文件一致,因此也能生成Shapefile文件。

在ArcGIS軟件里,導(dǎo)入省級(jí)行政區(qū)劃Shapefile,在此上導(dǎo)入地級(jí)市行政區(qū)劃,效果如下圖所示。

數(shù)據(jù)處理

有了json數(shù)據(jù),但是ArcGIS并不能直接使用,這里借助mapshaper這個(gè)網(wǎng)站生成Shapefile文件,最后得到一個(gè)zip壓縮包。我們把它解壓縮,就可以添加到ArcGIS里用啦。
現(xiàn)在我們有個(gè)各個(gè)省份的json數(shù)據(jù)。接下來(lái)需要完成兩步數(shù)據(jù)處理。這里選擇Python代碼完成數(shù)據(jù)處理任務(wù)。

數(shù)據(jù)處理1:將全國(guó)各個(gè)省級(jí)行政單位的地級(jí)市數(shù)據(jù)匯總并保存到一個(gè)文件里。代碼如下:

import json import os# 所有省級(jí)行政單位地圖json數(shù)據(jù)保存在代碼同級(jí)目錄下的data文件夾里 path = './data/'all_city_array = []# 遍歷data文件夾下所有省級(jí)單位地圖json文件 for file_name in os.listdir(path):# 拼接生成單個(gè)json文件全路徑名full_path = path + file_name# 打開單個(gè)json文件with open(full_path, 'r', encoding='utf-8') as fp:data = json.load(fp)current_city_array = data['features']# 讀取地級(jí)市數(shù)據(jù)并保存到列表中for i in range(len(current_city_array)):all_city_array.append(current_city_array[i])all_data_json = {} # 參照原始json文件內(nèi)容 all_data_json["type"] = "FeatureCollection" all_data_json["features"] = all_city_array# 用于保存所有地級(jí)市地圖數(shù)據(jù)的文件 all_data_filename = 'all_data_filename.json'with open(all_data_filename, 'w') as file_obj:json.dump(all_data_json, file_obj)print('finish')

數(shù)據(jù)處理2:將每一類地級(jí)市分別匯總到一個(gè)json文件中。代碼如下:

import json import os# 我們可以用excel打開需求里的表格,然后分年份選定對(duì)應(yīng)的城市,并分別保存到不同的txt文件里。 # 后續(xù)根據(jù)txt文件分別篩選并保存對(duì)應(yīng)地級(jí)市地圖數(shù)據(jù)json文件。map_data_path = './all_data_filename.json' # 保存2012年對(duì)應(yīng)所有地級(jí)市名的txt文件 year_2012_city_name_file = './2012.txt'# 用來(lái)存儲(chǔ)2012年對(duì)應(yīng)的城市 _2012_city_names = []# 讀取2012年地級(jí)市名 city_name_file = open(year_2012_city_name_file, 'r', encoding='utf-8') city_names = city_name_file.readlines() for city in city_names:city_name = city.strip()_2012_city_names.append(city_name)# 用來(lái)存儲(chǔ)2012年對(duì)應(yīng)的地圖數(shù)據(jù) year_2012_city_data_array = []# 打開保存有所有地級(jí)市地圖數(shù)據(jù)的json文件,并進(jìn)行篩選 with open(map_data_path, 'r', encoding='utf-8') as all_map_data_file_fp:all_map_data_json = json.load(all_map_data_file_fp)all_map_data_city_array = all_map_data_json['features']for i in range(len(all_map_data_city_array)):# 從json里讀取城市名字city_name = all_map_data_city_array[i]['properties']['name']print(city_name)if city_name in _2012_city_names:# 符合條件,收集城市地圖數(shù)據(jù)print('yes ' + city_name)year_2012_city_data_array.append(all_map_data_city_array[i])_2012_all_data_json = {} _2012_all_data_json["type"] = "FeatureCollection" _2012_all_data_json["features"] = year_2012_city_data_array_2012_all_data_filename = '_2012_all_data_filename.json'# 將包含2012年對(duì)應(yīng)地級(jí)市地圖數(shù)據(jù)的json保存到指定json文件中 with open(_2012_all_data_filename, 'w') as file_obj:json.dump(_2012_all_data_json, file_obj)

成品

按照需求我們只需要在ArcGIS里導(dǎo)入省級(jí)行政區(qū)劃Shapefile和每一類地級(jí)市Shapefile。最終效果如下圖所示:

相關(guān)文件下載

這里提供相關(guān)文件,包括ArcGIS安裝包,以及基礎(chǔ)數(shù)據(jù)文件。

百度網(wǎng)盤鏈接

鏈接: https://pan.baidu.com/s/1LSQCKtssnBUR0-qUO4TGig?pwd=s7rb 提取碼: s7rb

阿里云盤鏈接

todo

參考

[1] https://baike.baidu.com/item/ArcGIS/8738161?fr=aladdin
[2] https://zhuanlan.zhihu.com/p/510140163
[3] https://www.bilibili.com/video/BV1X34y1B7K2/?spm_id_from=333.337.search-card.all.click&vd_source=e8eac17c5eae3017e98083900605d39f
[4] https://www.bilibili.com/video/BV1Nb4y1e7EQ/?spm_id_from=333.337.search-card.all.click&vd_source=e8eac17c5eae3017e98083900605d39f
[5] https://www.bilibili.com/video/BV1Mh411J7AS/?spm_id_from=333.337.search-card.all.click&vd_source=e8eac17c5eae3017e98083900605d39f
[6] https://www.bilibili.com/read/cv4868685

總結(jié)

以上是生活随笔為你收集整理的根据数据使用arcGIS画分级图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。