您當前的位置:首頁 > 攝影

GlobalMapper指令碼應用資料如何批次自動化處理

作者:由 三維GIS技術社群 發表于 攝影時間:2022-02-10

概述:

GlobalMapper是一款功能強大的小型化GIS柵格影像、向量資料處理、加工軟體,其本身具備了GIS軟體產品的幾乎所有特性,做到了將複雜的問題簡單化,哪怕你是對GIS一無所知的使用者都可以很快的上手,簡單直觀的功能設計都能夠幫助你以最快的速度完成所需要的工作,完成加工資料成品的任務。

介面化的操作,對資料操作之前要先開啟資料,大資料的處理,自動化處理極其不便。其指令碼可以有效解決這些問題。本文主要基於GlobalMapper的指令碼實現對影像、地形、示例資料的大資料指令碼話自動操作。

以下所有指令碼都是基於GlobalMapperV20實現。

1。資料獲取

下載影像資料

1。1圖新地球下載影像資料:

圖新地球有近千種圖源,都可以直接下載為tif格式的影像資料,谷歌影像、谷歌歷史影像、ArcGIS影像、天地圖影像、微軟影像:

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

1。2圖新地球下載地形資料:

GlobalMapper指令碼應用資料如何批次自動化處理

谷歌地形(90米)

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

ETOP(1。8km地形)

GlobalMapper指令碼應用資料如何批次自動化處理

SRTM3 90米地形

GlobalMapper指令碼應用資料如何批次自動化處理

Alster30米地形

GlobalMapper指令碼應用資料如何批次自動化處理

Alos12米地形

GlobalMapper指令碼應用資料如何批次自動化處理

5米地形

1。3快速標繪或者向量化資料;

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

1。4本教程示例資料

DEM:樣例資料獲取:樣例資料下載

資料範圍:

GlobalMapper指令碼應用資料如何批次自動化處理

為了讓資料適用效果更好,再在右下角繪製一個矩形,並下載影像和

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

2。tif影像和地形合併指令碼

2。1合併指定的tif格式的地形檔案到一個檔案中

指令碼如下:

//地形合併

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料

UNLOAD_ALL

//定義輸出檔案變數

DEFINE_VAR NAME=“OUTPUT_FILE” VALUE=“D:\GlobalMappper\script_sample_data\result\dem_merge。tif”

//匯入檔名

IMPORT FILENAME=“D:\GlobalMappper\script_sample_data\dem1\SRTM3_V4_90m。tif” ELEV_UNITS=“METERS”

IMPORT FILENAME=“D:\GlobalMappper\script_sample_data\dem2\Export14-15-59。tif” ELEV_UNITS=“METERS”

//匯出地形資料

EXPORT_ELEVATION FILENAME=“%OUTPUT_FILE%” TYPE=GEOTIFF ELEV_UNITS=“METERS”

上述檔案,儲存為字尾為gms的文字檔案

GlobalMapper指令碼應用資料如何批次自動化處理

注:預設情況下不支援中文,如需支援中文,請設定編碼格式為gb2312

指令碼執行方式1:

開啟GlobalMapper20,檔案下的【run script】選單

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

對比一下原始資料,和結果資料:

GlobalMapper指令碼應用資料如何批次自動化處理

指令碼執行方式2:

無需開啟globalmapper軟體即可直接執行

編寫配套的命令列檔案:

chcp指編碼格式(主要是中文):

chcp 65001 就是換成UTF-8內碼表

chcp 936 可以換回預設的GBK

chcp 437 是美國英語

/showprogress 指顯示進度資訊

@echo off

chcp 65001

“C:\Program Files\GlobalMapper20_64bit\global_mapper。exe” merge_dem_tif。gms /showprogress

pause

上述文字另存為字尾為bat的文保檔案

直接雙擊即可:

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

結果和方法1一致。

2。2合併指定的tif格式的影像檔案到一個檔案中

//影像合併

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料

UNLOAD_ALL

//定義輸出檔案變數

DEFINE_VAR NAME=“OUTPUT_FILE” VALUE=“D:\GlobalMappper\script_sample_data\result\dom_merge。tif”

//匯入檔名

IMPORT FILENAME=“D:\GlobalMappper\script_sample_data\dom1\13\dem範圍谷歌影像。tif”

IMPORT FILENAME=“D:\GlobalMappper\script_sample_data\dom2\13\dem範圍2谷歌影像。tif”

//匯出柵格資料

EXPORT_RASTER FILENAME=“%OUTPUT_FILE%” TYPE=GEOTIFF

結果如下:

GlobalMapper指令碼應用資料如何批次自動化處理

2。3合併一個資料夾下所有的tif格式的檔案

該功能尤其適合smart3d生產的影像或者地形

示例是合併影像,如果需要合併地形,最後一行的【EXPORT_RASTER】改為【EXPORT_ELEVATION 】,並帶上單位【ELEV_UNITS=“METERS”】即可

注:最開始沒注意,後來發現不帶單位的話,預設單位是分米【decimeters】

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料

UNLOAD_ALL

//定義輸出檔案變數

DEFINE_VAR NAME=“OUTPUT_FILE” VALUE=“D:\GlobalMappper\script_sample_data\result\multi_dom_file_export_result。tif”

//DIR_LOOP_START遍歷目錄, DIRECTORY目錄位置,FILENAME_MASKS過濾遍歷的檔案格式

//RECURSE_DIR表示是否搜尋子目錄

DIR_LOOP_START DIRECTORY=“D:\GlobalMappper\script_sample_data\multi_dom\” FILENAME_MASKS=“*。tif” RECURSE_DIR=YES

//匯入搜尋到的tif檔案

IMPORT FILENAME=“%FNAME_W_DIR%”

DIR_LOOP_END

//輸出合併後的TIF檔案

EXPORT_RASTER FILENAME=“%OUTPUT_FILE%” TYPE=GEOTIFF

3。tif影像和地形裁剪指令碼

LSV繪製一個用於進行裁剪的面,另存為clip。shp

如需裁剪地形,只需把【EXPORT_RASTER】改為【EXPORT_ELEVATION】,並帶上單位【ELEV_UNITS=“METERS”】即可

另外,2。2當中的整個目錄的遍歷形式也可應用,可動手嘗試

GlobalMapper指令碼應用資料如何批次自動化處理

GlobalMapper指令碼應用資料如何批次自動化處理

//影像裁剪

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料

UNLOAD_ALL

//定義輸出檔案變數

DEFINE_VAR NAME=“OUTPUT_FILE” VALUE=“D:\GlobalMappper\script_sample_data\result\dom_clip。tif”

//匯入檔名

IMPORT FILENAME=“D:\GlobalMappper\script_sample_data\dom1\13\dem範圍谷歌影像。tif”

//匯出柵格資料

//GEN_WORLD_FILE=YES : EXPORT TWF

EXPORT_RASTER FILENAME=“%OUTPUT_FILE%” TYPE=GEOTIFF PALETTE=OPTIMIZED GEN_WORLD_FILE=YES POLYGON_CROP_FILE=“D:\GlobalMappper\script_sample_data\clip\clip。shp”

GlobalMapper指令碼應用資料如何批次自動化處理

4。tif影像和地形投影轉換指令碼

投影轉換可以指定目標投影的prj檔案,也可以透過EPSG代號的方式進行指定

國家2000 三度分帶 中央經線108 座標不含分帶:4545

84經緯度座標系:4326

投影轉換方式1:EPSG

//投影轉換

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料

UNLOAD_ALL

//定義輸出檔案變數

DEFINE_VAR NAME=“OUTPUT_FILE” VALUE=“D:\GlobalMappper\script_sample_data\result\dom_project_convert。tif”

//匯入檔名

IMPORT FILENAME=“D:\GlobalMappper\script_sample_data\dom1\13\dem範圍谷歌影像。tif”

//透過EPSG引數載入新的全域性投影

LOAD_PROJECTION PROJ=“EPSG:4545”

//輸出新的重投影后的檔案

EXPORT_RASTER FILENAME=“%OUTPUT_FILE%” TYPE=GEOTIFF

顯示的是2000平面座標

GlobalMapper指令碼應用資料如何批次自動化處理

投影轉換方式2:prj檔案

//投影轉換

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料

UNLOAD_ALL

//定義輸出檔案變數

DEFINE_VAR NAME=“OUTPUT_FILE” VALUE=“D:\GlobalMappper\script_sample_data\result\dom_project_convert_prj。tif”

//匯入檔名

IMPORT FILENAME=“D:\GlobalMappper\script_sample_data\dom1\13\dem範圍谷歌影像。tif”

//從PRJ檔案載入新的全域性投影

LOAD_PROJECTION FILENAME=“D:\GlobalMappper\script_sample_data\script\4545。prj”

//輸出新的重投影后的檔案

EXPORT_RASTER FILENAME=“%OUTPUT_FILE%” TYPE=GEOTIFFGEN_WORLD_FILE=YES

如果需要生產prj或者tfw檔案,設定如下引數即可

//輸出新的重投影后的檔案

EXPORT_RASTER GEN_PRJ_FILE=YES GEN_WORLD_FILE=YES FILENAME=“%OUTPUT_FILE%” TYPE=GEOTIFF

5。用面檔案對kml進行分隔/裁剪

用西寧市建築輪廓的shp檔案,轉為kml(lsv和globalmapper都可以轉)

對於面數據,裁剪的時候會自動閉合

//kml裁剪

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料

UNLOAD_ALL

//匯入kml檔案

IMPORT FILENAME=“D:\GlobalMappper\script_sample_data\kml\xining_jianzhu_lunkuo。kml” LOAD_FLAGS=“0”

//根據shp檔案的形狀大小裁切後輸出kml檔案

EXPORT_VECTOR FILENAME=“D:\GlobalMappper\script_sample_data\result\kml_clip。kml” TYPE=KML POLYGON_CROP_FILE=“D:\GlobalMappper\script_sample_data\clip\clip_xining。shp”

//移除當前載入的所有資料

UNLOAD_ALL

GlobalMapper指令碼應用資料如何批次自動化處理

6。kml引數輸出csv

麗水市的poi的shp檔案,轉為kml作為示例資料,13萬條記錄

kml轉CSV

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料

UNLOAD_ALL

//匯入Kml檔案

IMPORT FILENAME=“D:\GlobalMappper\script_sample_data\kml\li_shui_shi。kml” LOAD_FLAGS=“0”

//透過EXPORT_VECTOR 匯出csv檔案

//COORD_DELIM表示逗號分割,COORD_ORDER採用WKT中的座標字串 ,EXPORT_ATTRS表示屬性樣式

//EXPORT_HEADER表示頭部是否匯出,POINTS_ONLY表示是否僅新增點

//USE_COMMA_FOR_DECIMAL 指定是否應使用十進位制逗號的歐洲樣式,而不是使用句點。

EXPORT_VECTOR FILENAME=“D:\GlobalMappper\script_sample_data\result\lishuishi_poi。csv” TYPE=CSV COORD_DELIM=COMMA COORD_ORDER=WKT EXPORT_ATTRS=NO_STYLE EXPORT_HEADER=NO USE_COMMA_FOR_DECIMAL POINTS_ONLY=NO

//移除當前載入的所有資料

UNLOAD_ALL

GlobalMapper指令碼應用資料如何批次自動化處理

7。shp檔案的投影轉換

用法和影像、地形基本一致,不過多介紹

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料

UNLOAD_ALL

//載入SHP檔案

IMPORT FILENAME=“shp/data。shp” LOAD_FLAGS=“0”

//透過EPSG引數載入新的全域性投影

LOAD_PROJECTION PROJ=“EPSG:3857”

//採用EXPORT_VECTOR輸出SHP檔案

//GEN_PRJ_FILE是否生成投影檔案,向量型別 SHAPE_TYPE

EXPORT_VECTOR GEN_PRJ_FILE=YES FILENAME=“output/data。shp” TYPE=SHAPEFILE SHAPE_TYPE=AREAS

//移除當前載入的所有資料

UNLOAD_ALL

8。檔案的迴圈遍歷(csv的讀取)

指令碼示例:(xxx。gms)

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料

UNLOAD_ALL

//呼叫CMD命令

//RUN_COMMAND COMMAND_LINE=“cmd /c del logs\log。txt /f”

//設定日誌檔案APPEND_TO_FILE表示不追加(NO)或者追加寫入(YES)檔案

SET_LOG_FILE FILENAME=“logs\log。txt” APPEND_TO_FILE=NO

//定義用來查詢CSV檔案資料的變量表state_codes

DEFINE_VAR_TABLE NAME=“state_codes” \

FILENAME=“file_003。csv”

END_VAR_TABLE

//從表state_codes中迴圈讀取引數如:id,name

//VAR_NAME表示使用者儲存當前迴圈值的變數, 使用方法:%ROW:xxx%

VAR_LOOP_START VALUE_TABLE=“state_codes” VAR_NAME=“%ROW%”

//記錄日誌

LOG_MESSAGE %ROW:id% %ROW:name%

VAR_LOOP_END

CSV檔案內容:(xxx。csv)

id,name

01,xxx01。tif

02,xxx02。tif

執行結果如下:

擴充套件:

//也可以透過COMPARE_STR比較值來直接獲取單行檔案的其它值

DEFINE_VAR NAME=“name01” VALUE_TABLE=“state_codes” VALUE_COLUMN=“name” \

COMPARE_STR=“id=01”

LOG_MESSAGE %name01%

9。變數的定義

指令碼示例:(xxx。gms)

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//採用DEFINE_VAR來定義變數,NAME變數名,VALUE變數值

DEFINE_VAR NAME=“VAR1” VALUE=“val2”

DEFINE_VAR NAME=“VAR2” VALUE=“10”

//記錄日誌 採用%VAR1%來呼叫變數

LOG_MESSAGE %VAR1% —— %VAR2%

10。if語句的使用

指令碼示例:(xxx。gms)

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//採用DEFINE_VAR來定義變數,NAME變數名,VALUE變數值

DEFINE_VAR NAME=“VAR1” VALUE=“val2”

DEFINE_VAR NAME=“VAR2” VALUE=“10”

//透過COMPARE_STR來判斷變數%VAR1%的值是否為val1

IF COMPARE_STR=“%VAR1%=val1”

IF COMPARE_STR=“%VAR2%>10”

LOG_MESSAGE %VAR2% > 10

END_IF

ELSE_IF COMPARE_STR=“%VAR1%=val2”

LOG_MESSAGE %VAR1% == val2

ELSE

LOG_MESSAGE %VAR1% != val1

END_IF

11。for迴圈的應用

指令碼示例:(xxx。gms)

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//二級迴圈:與for迴圈類似,採用VAR_LOOP_START開始,VAR_LOOP_END結束

//VAL_FORMAT表示將小於10的數值格式化為2位數如:01

//VAR_NAME表示使用者儲存當前迴圈值的變數

VAR_LOOP_START VAL_START=1 VAL_STOP=10 VAL_STEP=1 VAL_FORMAT=“%02d” VAR_NAME=“%ROW%”

VAR_LOOP_START VAL_START=1 VAL_STOP=10 VAL_STEP=1 VAR_NAME=“%COL%”

LOG_MESSAGE %ROW% —— %COL%

VAR_LOOP_END

VAR_LOOP_END

12。資料夾下檔案的遍歷

指令碼示例:(xxx。gms)

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//DIR_LOOP_START遍歷目錄, DIRECTORY目錄位置,FILENAME_MASKS過濾遍歷的檔案格式

//RECURSE_DIR表示是否搜尋子目錄

DIR_LOOP_START DIRECTORY=“shp\” FILENAME_MASKS=“*。shp” RECURSE_DIR=NO

//當前檔案的完整路徑

LOG_MESSAGE %DIR%

//當前檔案的完整路徑和檔名

LOG_MESSAGE %FNAME_W_DIR%

//當前檔案的檔名,不帶副檔名

LOG_MESSAGE %FNAME_WO_EXT%

//檔案的父目錄的名稱

LOG_MESSAGE %PARENT_DIR%

//某個父目錄級別的名稱,其中“N”是級別, %PARENT_DIR1%%PARENT_

DIR2%

LOG_MESSAGE %PARENT_DIRN%

//資料夾遞迴到原始搜尋資料夾之外:C:\ path\to\my\data\sub\folder\my\u file。dem值為‘sub\folder’

LOG_MESSAGE %RECURSE_FOLDER%

DIR_LOOP_END

13。多指令碼同時執行(引數傳遞)

指令碼示例:(xxx。gms)

//指令碼標識頭 版本固定1。00 【該行必須存在】

GLOBAL_MAPPER_SCRIPT VERSION=1。00

//移除當前載入的所有資料,%var1%為獲取的傳參的值

LOG_MESSAGE Get var1 <%var1%>

//匯入檔案%var1%,即傳參data。tif

//ANTI_ALIAS表示是否透過在畫素之間進行細調來移除鋸齒邊

IMPORT FILENAME=“%var1%” ANTI_ALIAS=NO

bat檔案:

@rem-var1表示傳遞的變數名稱,data表示變數-var1的值

global_mapper。exe xxx。gms -var1 data。tif

14。關聯知識點:

14。1投影檔案的獲取

http://epsg。io

http://spatialreference。org

14。2影像、地形檔案的介紹

多數3通道的tif認為是影像,單通道的認為是地形

並不排除部分影像本身就是單波段。

推薦閱讀:

19級20級谷歌衛星地圖瀏覽下載,清晰度驚人!

國產專業版谷歌地球,高畫質衛星影像瀏覽下載、地形分析秒殺谷歌地球

谷歌地球中國服務正式關閉,國產天地圖完全替代谷歌地球?

谷歌地球不能用了,我敢說大部分人不知道真實原因(附最新解決方案)

全球19級以上高畫質衛星影像地圖檢視下載

標簽: 00  filename  var  data  檔案