導航:首頁 > 數據處理 > 地理空間數據雲是什麼

地理空間數據雲是什麼

發布時間:2024-08-21 01:01:21

1. 如何在地質雲下載鑽孔數據

1、需要在平台注冊一個賬號,在下載數據之前需求清楚你需要的數據是什麼。
2、通過「數據檢索」菜單進行數據選擇,在檢索結果列表可以選擇需要下載的數據。
3、數據檢索的方式有多種(基於空間位置、經緯度等),從平台獲取的數據基本上都是1級產品,經過正射校正和雲、雪等預處理的產品。
4、獲取到這些數據後可以通過一些遙感軟體對影像的信息進行解譯,計算最終獲得需要的成果。
5、不清楚需要的數據,可以通過「數據資源」菜單查看平台提供的所有數據資源,在選擇出所需的數據。地理空間數據雲平台是一個公共的遙感數據產品獲取平台。

2. 怎麼在中國地理空間數據雲找梅州市行政邊界

今天我們以高德地圖為例,講解一下如何獲取全國省市區行政邊界數據。

高德開放平台Web服務API

https://lbs.amap.com/

依次點擊開發支持–Web服務–Web服務API,即可進入到高德開放平台Web服務API頁面。

在這里插入圖片描述

可以發現,官方已開放了行政區域查詢的介面。

在這里插入圖片描述

點擊查看該介面的詳細介紹:

在這里插入圖片描述
其實就是先申請Key,然後構造Http請求,發送請求解析返回數據即可。

同時介面文檔提到,該介面只能返回國、省、市、區的polyline(邊界點集合),不支持街道級別,但已經滿足我們的需求了。

首先分析下介面請求參數:

在這里插入圖片描述
有4點值得關注:

keywords支持行政區名稱、citycode、adcode這3種格式,行政區名稱可能存在重復(尤其level是縣/區時),而citycode只有level在市或市以下才有,只有adcode可以唯一指定某個行政區,所以檢索的時候,我們使用adcode作為keywords傳入;
subdistrict可以指定子級行政區的嵌套層數;
當最外層的districts超過20個元素時,需要配合page參數來獲取全部元素;
只有extensions配置為all時,介面才會返回我們需要的區域邊界數據。
想要一次性採集全國省市區行政邊界數據的話,第1步肯定是先設法拿到省、市、區的列表,然後逐個遍歷。

我們可以設置keywords為"中華人民共和國",然後將subdistrict設置為3,下3層(省、市、區)的子行政區信息就會返回。

這樣,我們發送1次請求就可以拿到省、市、區的列表了。

接著,我們將subdistrict調整為1(減少數據冗餘),依次遍歷各個行政區域即可。

實現代碼如下:

# -*- coding:utf-8 -*-

import requests
import time
import mongo_util #自行封裝的操作mongodb的工具類

def get_district_info(key, col, time_delay, headers={}):
request_url = 'https://restapi.amap.com/v3/config/district'
country_name = '中華人民共和國'
params = {
'subdistrict':'3',
'extensions':'all',
'key':key,
'output':'json',
'keywords':country_name,
}
# 設置subdistrict為3,1次請求獲取到國、省、市、區的信息
country_res = requests.get(url=request_url, headers=headers, params=params).json()
if country_res['status'] != "1":
print("調用高德地圖Web API失敗!")
return
country = country_res['districts'][0]
col.insert_one(country)
print(f'{country_name}數據插入成功!')
params['subdistrict'] = '1'
# 遍歷省
provinces = country['districts']
for province in provinces:
province_name = province['name']
params['keywords'] = province['adcode']
prov_res = requests.get(url=request_url, headers=headers, params=params).json()
if prov_res['status'] == "0":
print(f'{country_name}-{province_name}數據獲取失敗!')
continue
col.insert_one(prov_res['districts'][0])
print(f'{country_name}-{province_name}數據插入成功!')
time.sleep(time_delay)
# 遍歷市
cities = province['districts']
if len(cities) == 0:
continue
for city in cities:
city_name = city['name']
params['keywords'] = city['adcode']
city_res = requests.get(url=request_url, headers=headers, params=params).json()
if city_res['status'] == "0":
print(f'{country_name}-{province_name}-{city_name}數據獲取失敗!')
continue
col.insert_one(city_res['districts'][0])
print(f'{country_name}-{province_name}-{city_name}數據插入成功!')
time.sleep(time_delay)
# 遍歷區
districts = city['districts']
if len(districts) == 0:
continue
for district in districts:
distinct_name = district['name']
params['keywords'] = district['adcode']
distinct_res = requests.get(url=request_url, headers=headers, params=params).json()
if distinct_res['status'] == "0":
print(f'{country_name}-{province_name}-{city_name}-{distinct_name}數據獲取失敗!')
continue
col.insert_one(distinct_res['districts'][0])
print(f'{country_name}-{province_name}-{city_name}-{distinct_name}數據插入成功!')
time.sleep(time_delay)
# 主函數
if __name__ == '__main__':
key = "******"
# 介面請求之間的間隔
time_delay = 0.01
db_name = 'web_map'
col_name = 'distinct'
# MongoDB資料庫所在的伺服器
host = '******'
port = 27017
# 獲取mongodb的表句柄
col = mongo_util.get_col(db_name, col_name, host, port)
# 獲取全國各級行政區的數據
get_district_info(key, col, time_delay)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
因為介面返回的是JSON類型的嵌套數據,所以這里選擇MongoDB作為存儲組件。

為了防止爬取過程中,進程宕掉導致已請求的數據丟失,可以拿到1條數據就入庫1條數據。

避免數據全都在內存中,執行批量插入的過程中異常退出,又得重復請求,但每個賬號的天請求次數是有限制的。

同時,各個介面均有QPS閾值,所以我們通過time_delay參數來控制數據採集的頻率。

但是高德開方平台Web服務API有天調用次數的限制,如果想獲取大量數據,可能需要多個賬號或者分多天進行請求,有沒有更好的方法呢?

帶著這樣的疑問,我又看了看高德地圖其他的API版塊。

JS API

瀏覽高德開放平台的JS API示例,裡面也有個行政區邊界查詢的Demo。

https://lbs.amap.com/demo/jsapi-v2/example/district-search/draw-district-boundaries

在這里插入圖片描述

打開瀏覽器的"開發者工具",我們抓包一下哪個請求是用來獲取行政區域數據的。

在這里插入圖片描述

在這里插入圖片描述
哈哈哈,其實跟開放的Web API介面地址是一致的,而且通過分析介面請求,我們直接可以拿到key。

也就是說,不需要用自己高德賬號里生成的key值了。

使用這個key構建介面請求,悲傷的發現,介面返回異常。

在這里插入圖片描述
說明該介面其實還是跟開放的Web API介面還是有區別的,一般體現在請求參數和Headers上。

我們把瀏覽器抓取到的請求參數和Headers配置原封不動的拷貝過來,再次構建介面請求,此時介面正常返回。

但請求參數里的csid是個啥東西,而且不同行政區域請求里的csid還不同。

在這里插入圖片描述
嘗試著去掉該參數,然後構建介面請求,發現介面仍然可以正常返回,說明該參數是可選參數,而且不是檢索欄位。

按照這個思路,我們逐步嘗試去掉其他請求參數和Headers里的配置。

發現該介面與開放的Web API介面相比,本質僅有2點不同:

請求參數
請求參數需要額外指定: s=rsv3

Headers
需要添加如下Headers:

在這里插入圖片描述
調整原來的代碼:

在params里增加s配置
params = {
'subdistrict':'3',
'extensions':'all',
'key':key,
'output':'json',
'keywords':country_name,
's':'rsv3' # 該項配置是關鍵配置
}
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
在發送請求的時候傳入headers
headers = {
'Host': 'restapi.amap.com',
'Referer': 'https://lbs.amap.com/'
}
# 獲取mongodb的表句柄
col = mongo_util.get_col(db_name, col_name, host, port)
# 獲取全國各級行政區的數據
get_district_info(key, col, time_delay, headers)
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
該種方法的優點是繞開了第1種方法的日調用次數限制(高德是否有額外的反爬策略,待驗證)。

AMAP Service

其實前面headrs的Referer配置就提醒我了,是不是高德地圖在https://lbs.amap.com/這個地址下也有功能相同的介面。

所以就在高德平台上隨意點了點,逛了逛,還真就發現了,哈哈哈。

在這里插入圖片描述
與上面兩個介面不同的是,這個介面是POST請求,而且竟然不需要指定key,這也太爽了吧,哈哈哈。

接著看一下請求參數:

在這里插入圖片描述
參數和開放平台Web服務API的完全一致。

最後看一下表單數據:

在這里插入圖片描述

顯然表單數據是用來配置請求哪個介面的,這里的config/district代表的就是行政區域查詢。

代碼調整起來也不難:

# 調整請求的url
request_url = 'https://lbs.amap.com/service/api/restapi'
# 將所有的請求調整為POST,並傳入表單數據,例如:
body = {
"type": "config/district",
"version": "v3"
}
country_res = requests.post(url=request_url, params=params, data=body).json()
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
該介面跟第2種介面相比,更近一步,連key值都省略了。

總結

本文介紹了3種基於高德地圖獲取全國省市區行政

3. 地理空間數據雲下載需要用戶花錢么

不需要的。
地理空間數據雲是國內能免費下載數據較全的一個網站,提供LANDSAT系列數據、MODIS系列數據、DEM數字高程數據、EO-1數據等。比較有特色的該網站那還提供數據眾包服務。
地理空間數據,定義:面向主題的、集成的、動態更新的、持久的空間數據集合。
所屬學科:地理學(一級學科),地理信息系統(二級學科)空間數據:是數據的一種特殊類型。它是指凡是帶有空間坐標的數據。
地理空間數據:是空間數據的一種特殊類型。它是指帶有地理坐標的數據,包括資源、環境、經濟和社會等領域的一切帶有地理坐標的數據,是地理實體的空間特徵和屬性特徵的數字描述。

4. 地理空間數據雲打開文件夾為空

這樣的狀況下,應該上下載失敗導致的,建議你重新下載,可以去地理空間數據雲下載。
地理空間數據雲(GSCloud),由中科院計算機網路信息中心於2008年創立,是國際先進,國內最具影響力的地學大數據平台。
平台緊密圍繞科研人員在地理空間數據搜索、獲取、存儲、分析和可視化等方面的迫切需求,利用雲計算、大數據等新一代信息技術,自主研發了可靠的大規模地理空間數據實時分析引擎,實現了億級元數據高效管理和PB級實體數據分析服務。平台不斷創新服務模式,成功實現海量數據實時在線分析服務、在線眾包創新服務及在線協同標注服務等。

閱讀全文

與地理空間數據雲是什麼相關的資料

熱點內容
bp神經網路一般需要多少數據 瀏覽:924
雷霆交易籌碼哪個好 瀏覽:703
電腦桌面怎麼把程序分左右放 瀏覽:39
哪個市場的mpv最香 瀏覽:929
專門發調劑信息的app有哪些 瀏覽:832
怎麼刪除門禁卡里的數據 瀏覽:644
qq資料找回密碼需要多少信息 瀏覽:563
三亞賣布市場在哪裡 瀏覽:296
車企如何突圍市場 瀏覽:911
筆記本內存暫存的數據在哪裡 瀏覽:428
張家港豆腐技術學費多少 瀏覽:91
佛山新農批市場什麼名字 瀏覽:940
佳明什麼時候發布新產品 瀏覽:490
放射技術中級是什麼等級 瀏覽:836
什麼叫分銷商和代理商 瀏覽:227
手機怎麼修改社保卡基礎信息 瀏覽:416
飼料代理需要辦理哪些手續 瀏覽:451
招標資質取消後怎麼做招標代理 瀏覽:730
報考醫學影像技術怎麼樣 瀏覽:769
如何搭建商品交易平台 瀏覽:248