1. 地理空間數據雲數據覆蓋不了一個市怎麼辦
這次的主要任務是學會下載哨兵二號的遙感影像數據,學長推薦了幾個常用的網站如GEE、EOS、USGS、地理空間數據雲,我計劃把幾個網站都嘗試一下,下面就按順序進行嘗試:
一、GEE
網址:https://code.earthengine.google.com
GEE(Google Earth Engine),即谷歌地球引擎,據說是世界上使用量最大的雲平台(如果真是這樣的話,那說明遙感和地信的分量確實很重了)。
登錄這個網站需要科學上網,首先需要用一個谷歌賬號登錄(關於谷歌賬號的注冊門道也有點多,這里就不細說了),然後用該賬號提出申請,申請界面如下:
雖然這里的郵箱使用的是qq郵箱,但還是很不建議使用,最好使用學校的官方郵箱,申請成果的可能性會大一些。
機構就選擇所在的大學,類型選擇acadamic即可,國家選擇China,至於最後的「申請賬號來干什麼」,我當時是先用網路翻譯把我的申請理由給翻譯成英文後再復制上去的,具體理由就是說一下要做研究之類的。我當時這樣申請之後可以說是秒通過了(郵箱里會收到通知),這也是在之前失敗了n次之後的結果。
來到主界面,是這個樣子的:
首先導入武漢的矢量文件,注意是壓縮包(zip)格式:
通過如下代碼可實現導入:
導入結果:
在資源搜索欄中尋找哨兵二號的數據集,並選擇導入(IMPORT):
可以看到代碼編輯區為我們准備好了代碼:
接下來使用如下代碼下載影像:
var district = table;
var dsize = district.size();
var district_geometry = district.geometry();
print(dsize);
Map.centerObject(district_geometry,7);
//去雲
function maskS2clouds(image) {
var qa = image.select('QA60');
// Bits 10和11分別是雲和卷雲
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
// Both flags should be set to zero, indicating clear conditions.
var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
.and(qa.bitwiseAnd(cirrusBitMask).eq(0));
return image.updateMask(mask).divide(10000);
}
//處理數據,生成數據集
var dataset = ee.ImageCollection('COPERNICUS/S2')
.filterBounds(district_geometry)//區域篩選
.filterDate('2020-01-01', '2020-12-30')//時間范圍
// 選擇雲量
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 1))
.map(maskS2clouds)
.select(['B8', 'B4', 'B3']);
//可視化參數
var rgbVis = {
min: 0.0,
max: 0.3,
bands: ['B8', 'B4', 'B3'],//按照8波段、4波段、3波段放入通道合成
};
var IMAGE = dataset.mosaic();
//下載數據
Export.image.toDrive({
image:IMAGE,
description:'image_really_none',//設置下載任務tasks的名稱
scale:10,//解析度是10m
maxPixels: 1e13,//單幅影像輸出的最大像元數
region:district_geometry,//下載范圍
fileFormat: 'GeoTIFF',//設置影像導出格式,注意GeoTIFF格式需要所有波段存儲類型一致(如不能同時存Int16和Int32)
formatOptions: {
cloudOptimized: true
}
});
可以在右上角的Tasks欄中看到載入的任務:
點擊「Open in Drive」,可以從雲端下載影像:
將下載後的影像載入到ENVI中進行查看:
二、USGS
網址:EarthExplorer (usgs.gov)
USGS是美國地質調查局的官方網站,同樣需要科學上網,我這里使用的是學校郵箱注冊的官網賬號,登陸後就可以進行數據下載了。
首先,我還是通過想通過矢量數據直接定位武漢,所以就選擇"KML/Shapefile Upload",再選擇Shapefile格式,載入文件(注意這里載入的文件必須是zip壓縮文件形式):
但是很遺憾的是出現了如下狀況:
這里顯示我的武漢市范圍矢量文件不只一個多邊形,我有些奇怪,就把文件載入到arcgis里看了下,果然在右上角發現了一個小范圍的多邊形:
所以我選擇從行政區劃的角度來選擇,在左側欄中輸入關鍵字「wuhan」即可得到結果:
為了找出下載的具體范圍,我們需要進行選定,這里方法比較多,比如說下圖中的畫圓法,先點擊一下可得圓心,再點擊一下可得半徑:
也可以選擇多邊形法,這樣畫的范圍可能更為准確:
下面還可以選擇影像時間,默認為全部時間段的影像:
接下來選擇數據源,這里是哨兵二號:
接下來可以選擇一些具體的參數,如雲量:
接下來就可以檢索到符合條件的一些影像數據了,可以選擇第一個像腳印一樣的符號來把影像載入到地圖上來查看范圍(自動會用不同顏色標識):
選擇第五個圖標即可進行下載:
三、地理空間數據雲
網址:地理空間數據雲 (gscloud.cn)
在這個上面下數據是比較簡單的了,之前做遙感實習時的數據也主要是從這上面下的。打開官網後選擇「高級檢索」,可以看到界面是非常簡潔明了的:
選擇數據集為哨兵二號,選擇用矢量文件來劃定區域:
比較奇怪的是,這里用矢量數據劃定區域後找不到合適的影像(可能和之前在USGS下載時的問題一樣,由於矢量文件不只一個多邊形所導致):
所以這里就採取另一種方法:先根據行政區劃找到覆蓋武漢市影像,然後再用武漢市范圍的矢量數據進行剪裁,這就需要找到能夠覆蓋武漢市全部范圍的圖像,總共是3張(之前做實習下的是Landsat8的數據,也是三張即可覆蓋武漢全境),注意要檢索能夠下載的數據,因為很多數據能被檢索到但我們卻不能下載:
總結
哨兵二號的數據可以從很多網站上下載得到,除了上面介紹的這些還有很多,擔上面這三種應當可以滿足大部分時候的需求了。
2. 地理空間數據雲沒有數據怎麼辦
地理空間數據雲沒有數據需要注冊後才能顯示。步驟如下:
1、下載地理空間數據雲APP,點進入,登陸。
2、沒有帳號需要注冊,填寫個人資料,就注冊成功了。
3、首頁高級搜索可以看到數據。
3. 91衛圖下載dem如何使用
1、打開網頁,搜索「地如衡理空間數據雲」,進入其官網,登陸個人賬戶密碼。
2、單擊「DEM數字高程模型」,目前提供的DEM數據有SRTM90米解析度數字高程數據和GDEM30米解析度數字高程數據二種,可以根據需要選擇下載。
3、輸入下載范圍,點滑橡卜擊右方「信穗下載」按鈕。下載完成後,用arcgis打開即可。
4. 地理空間數據雲,感測器怎麼選擇
1、首先打開電腦,點擊下載軟體《地理空間數據雲》。
2、其次在軟體中找到相對應的設備。
3、最後通過數據轉換得出的型號就是最合適的感測器型號。
5. 烏克蘭地理空間數據雲怎麼下載
下載具體步驟如下:
1.注冊賬號
首先需要注冊一個賬號。注冊賬號比較簡單。
2.選擇數據集
登陸進來以後,我們可以直奔主題,選擇自己想要下載的數據。點擊高級檢索。
點擊「點擊選擇數據集」選擇要下載的數據,這里我們選擇SRTMDEM90M解析度數據,然後點擊確定。
選擇數據集成功
3.選擇數據集范圍
接下來我們要圈定自己想要下載的區域的DEM,這里提供了5種確定自己研究區范圍的選項。對於行政區來說,如果知道自己研究區在哪個區縣里,就可以通過這種方式直接選擇;如果知道研究區的經緯度范圍就可以選擇第二種方式下載;行列號與經緯度類似,用的也比較少;地圖選擇就是直接在地圖上手動畫一個范圍;第五種方法就是直接上傳一個.shp文件,然後地圖會自動顯示該.shp文件范圍。
4.數據下載
按照行政區選擇范圍後,點擊「搜索」,就可以得到覆蓋數據了。
6. 地理空間數據雲雲量怎麼填
地理數據空間雲並不需要填寫雲量。它是一款中國科學院計算機網路信息中心科學數據中心啟動了「國際科學數據服務平台」建設。
2011年,科學數據中心在「國際科學數據服務平台"基礎上開始建設「地理空間數據雲平台",並於2013年1月正式對外投入使用。
地理數據雲使用方法:
1、進入該平台的官方網站,直接在官網上完成賬號的注冊;
2、完成注冊之後,可以進入該平台檢索你所需要的信息。
3、如果你想要下載免費的DEM數據,同樣需要再注冊賬號之後在高級檢索中選擇你想尋找的數據集,之後進行下載操作即可。
7. 地理空間數據雲怎麼查找公園數據
可以通過地理信息平台或地理信息系統軟體來查找公園數據。
地理信息平台和地理信息系統軟體都是可以用來處理和展示地理空間數據的工具。在地理信息平台中,可以通過搜索或者瀏覽的方式來查找公園數據。例如,在網路地圖中,可以在搜索框中輸入「公園」或者「park」,然後在搜索結果中選擇相關的公園,就可以查看公園的位置信息、周邊環境等相關數據。在地理信息系統軟體中,可以通過導入公園數據或橡侍攔者下載相關的數據集來獲談鄭取公園數據。例如,在ArcGIS等地理信息系統軟體中,可以通過下載相關的地理空間數據集,從而獲取包括公園在內的各種空間數據。
地理空間數據雲是一種基於雲計算技術的地理信息服務平台,可以提供豐富的地理信息數據和分析工具,幫助用戶完成各種空間數據處理和分析工作。在地梁胡理空間數據雲中,用戶可以通過搜索和瀏覽的方式來查找公園數據,同時還可以進行空間查詢、空間分析等操作,從而獲取公園數據的各種屬性信息和相關的空間分析結果。對於需要大量地理空間數據處理和分析的用戶來說,地理空間數據雲是一種非常方便和高效的工具,可以大大提高工作效率和數據准確性。
8. 怎麼在中國地理空間數據雲找梅州市行政邊界
今天我們以高德地圖為例,講解一下如何獲取全國省市區行政邊界數據。
高德開放平台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種基於高德地圖獲取全國省市區行政
9. 地理空間數據雲條帶號怎麼檢索數據
1、確定雲條帶號。猛禪根據所需要的遙感數據的時間和地點信息,可以查找相應的雲條帶號。
2、選擇數據源。根據所需的數據類型和地區,選擇相應的遙灶戚感影像數據源。
3、進行數據檢索。在數據源的網站上,使用雲條帶號或其他相關關鍵詞進行數據檢索。使用雲條帶號進行檢索,可以在網站的搜索框中輸入雲條帶號進行檢索。使用其他關鍵詞進行檢索,可以根據數據源的搜索方式進行操作枝辯塵。