最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 讀取.shp文件并生成圖幅編號(hào)的實(shí)現(xiàn)思路

 更新時(shí)間:2024年05月29日 09:57:12   作者:ThsPool  
這篇文章主要介紹了Python 讀取.shp文件并生成圖幅編號(hào),代碼適用于需要處理和分析地理空間數(shù)據(jù)的場(chǎng)景,如城市規(guī)劃、環(huán)境監(jiān)測(cè)或自然資源管理,其中它可以幫助用戶讀取特定區(qū)域的Shapefile文件,確定其地理邊界,需要的朋友可以參考下

代碼適用于需要處理和分析地理空間數(shù)據(jù)的場(chǎng)景,如城市規(guī)劃、環(huán)境監(jiān)測(cè)或自然資源管理,其中它可以幫助用戶讀取特定區(qū)域的Shapefile文件,確定其地理邊界,并基于這些邊界計(jì)算出按照經(jīng)緯度5度間隔的圖幅編號(hào),進(jìn)而用于地圖制作、空間數(shù)據(jù)管理和快速數(shù)據(jù)檢索。

實(shí)現(xiàn)思路:

代碼主要用于處理地理空間數(shù)據(jù),具體功能如下:

  • 讀取一個(gè)Shapefile(.shp)文件,獲取其地理邊界范圍。
  • 根據(jù)獲取的邊界范圍,計(jì)算出按照經(jīng)緯度 間隔的圖幅編號(hào)。
  • 將每個(gè)國(guó)家的地圖邊界范圍和對(duì)應(yīng)的圖幅編號(hào)存儲(chǔ)起來(lái),并打印出來(lái)。

完整代碼

import csv
import geopandas as gpd
def get_map_extent(shp_file_path):
    """
    讀取.shp文件并獲取其邊界范圍。
    :param shp_file_path: .shp文件路徑
    :return: 地圖邊界的范圍 (minx, miny, maxx, maxy)
    """
    # 讀取.shp文件
    gdf = gpd.read_file(shp_file_path)
    # 獲取地圖邊界
    boundary = gdf.geometry.total_bounds
    # 返回地圖范圍
    return boundary
def calculate_sheet_ranges(map_extent):
    """
    根據(jù)地圖邊界計(jì)算圖幅范圍,并按照南北緯和東西經(jīng)的5度分隔規(guī)則返回圖幅范圍的格式。
    :param map_extent: 地圖邊界的范圍 (minx, miny, maxx, maxy)
    :return: 圖幅范圍列表,每個(gè)元素包含(lon_start, lat_start, lon_end, lat_end, sheet_range)
    """
    minx, miny, maxx, maxy = map_extent
    # 初始化圖幅范圍列表
    sheet_ranges = []
    # 計(jì)算圖幅編號(hào)
    # for lon_start in range(int(minx // 5) * 5, int(maxx // 5 + 1) * 5, 5):
    #     for lat_start in range(int(miny // 5) * 5, int(maxy // 5 + 1) * 5, 5):
    for lon_start in range(int(minx // 5) * 5, int(maxx // 5 + 1) * 5, 5):
        for lat_start in range(int(miny // 5 + 1) * 5, int(maxy // 5 + 2) * 5, 5):  # GLC_FCS30D 緯度需要上調(diào)一格5度
            lon_end = lon_start + 5
            lat_end = lat_start + 5
            sheet_range = f"{'W' if lon_start < 0 else 'E'}{abs(lon_start)}" \
                          f"{'S' if lat_start < 0 else 'N'}{abs(lat_start)}"
            sheet_ranges.append(sheet_range)
    return sheet_ranges
def main():
    iso_data = []
    with open('../../ISO.csv', newline='') as csvfile:
        # 創(chuàng)建 CSV 讀取器
        csv_reader = csv.reader(csvfile)
        data = list(csv_reader)  # 將文件內(nèi)容讀取到內(nèi)存中
        # 初始化行數(shù)計(jì)數(shù)器
        iso_count = 0
        for country in data:
            iso_count += 1
            sids_country = country[0]
            iso_map_extent = [iso_count, sids_country]  # [1, 'BMU']
            # 示例文件路徑
            shp_file_path = fr'path_to_admin_division\{sids_country}.shp'
            # 獲取地圖范圍
            map_extent = get_map_extent(shp_file_path=shp_file_path)
            # 計(jì)算圖幅范圍
            sheet_ranges = calculate_sheet_ranges(map_extent=map_extent)
            # 打印結(jié)果
            print(iso_count, sids_country, map_extent)
            iso_map_extent.extend(sheet_ranges)
            iso_data.append(iso_map_extent)
            print('- Map Extent Num: ', len(sheet_ranges), iso_map_extent[2:], '\n')
if __name__ == '__main__':
    main()

實(shí)現(xiàn)流程:

  • 導(dǎo)入庫(kù):導(dǎo)入csv庫(kù)用于讀取CSV文件,導(dǎo)入geopandas庫(kù)用于處理地理空間數(shù)據(jù)。
  • 定義get_map_extent函數(shù):該函數(shù)接收一個(gè).shp文件路徑作為參數(shù),讀取該文件,并返回其地理邊界范圍。
  • 定義calculate_sheet_ranges函數(shù):該函數(shù)接收一個(gè)邊界范圍作為參數(shù),計(jì)算并返回一個(gè)圖幅編號(hào)列表。圖幅編號(hào)的計(jì)算規(guī)則是按照經(jīng)緯度5度的間隔。
  • 定義main函數(shù):這是程序的主要執(zhí)行函數(shù)。它首先讀取一個(gè)CSV文件,然后對(duì)于CSV文件中的每一個(gè)條目,執(zhí)行以下步驟:
    • 構(gòu)造.shp文件路徑。
    • 調(diào)用get_map_extent函數(shù)獲取地圖邊界范圍。
    • 調(diào)用calculate_sheet_ranges函數(shù)計(jì)算圖幅編號(hào)。
    • 打印出當(dāng)前處理的國(guó)家和其地圖邊界范圍。
    • 將地圖邊界范圍和圖幅編號(hào)添加到結(jié)果列表中。

執(zhí)行入口:如果該腳本作為主程序運(yùn)行,將調(diào)用main函數(shù)。

代碼運(yùn)行示例: 預(yù)備Shapefile文件:

程序輸出:

應(yīng)用范圍:

  • 地理信息系統(tǒng)(GIS):用于處理和分析地理空間數(shù)據(jù)。
  • 地圖制作:確定地圖的邊界范圍和圖幅編號(hào),有助于地圖的制作和布局。
  • 空間數(shù)據(jù)分析:在進(jìn)行空間數(shù)據(jù)分析時(shí),可以利用此腳本快速獲取地圖邊界和圖幅編號(hào),進(jìn)而進(jìn)行更深入的分析。
  • 科研和教育:在地理學(xué)、城市規(guī)劃、環(huán)境科學(xué)等領(lǐng)域的研究和教學(xué)中,用于數(shù)據(jù)處理和分析。

注意事項(xiàng):

  • 代碼中的shp_file_path是一個(gè)格式化字符串,需要根據(jù)實(shí)際的文件路徑進(jìn)行調(diào)整。
  • calculate_sheet_ranges函數(shù)中的注釋掉的代碼塊可能是用于不同的計(jì)算規(guī)則或示例。
  • 代碼中的打印語(yǔ)句用于調(diào)試和驗(yàn)證,展示了每個(gè)國(guó)家的邊界范圍和圖幅編號(hào)。

相關(guān)函數(shù)及調(diào)用庫(kù)的解釋說(shuō)明:

函數(shù)及調(diào)用庫(kù)描述
csvPython標(biāo)準(zhǔn)庫(kù)中的模塊,用于讀寫CSV(逗號(hào)分隔值)文件。在此代碼中,它被用來(lái)讀取包含國(guó)家信息的CSV文件。
geopandas一個(gè)開源項(xiàng)目,擴(kuò)展了pandas庫(kù)的功能,使其能夠處理地理空間數(shù)據(jù)。它允許用戶讀取、處理和分析地理空間數(shù)據(jù)。
get_map_extent(shp_file_path)此函數(shù)接收一個(gè)Shapefile的文件路徑作為參數(shù),使用geopandas的read_file方法讀取Shapefile,并獲取其幾何邊界。返回值是一個(gè)包含最小經(jīng)度、最小緯度、最大經(jīng)度、最大緯度的元組。
calculate_sheet_ranges(map_extent)此函數(shù)接收一個(gè)地圖邊界范圍作為參數(shù),并基于這個(gè)范圍計(jì)算圖幅編號(hào)。按照南北緯和東西經(jīng)的5度間隔規(guī)則來(lái)劃分圖幅,并返回一個(gè)包含這些圖幅編號(hào)的列表。

到此這篇關(guān)于Python 讀取.shp文件并生成圖幅編號(hào)的文章就介紹到這了,更多相關(guān)Python 讀取.shp文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django+Bootstrap實(shí)現(xiàn)計(jì)算器的示例代碼

    Django+Bootstrap實(shí)現(xiàn)計(jì)算器的示例代碼

    本文主要介紹了Django+Bootstrap實(shí)現(xiàn)計(jì)算器的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 一文詳細(xì)說(shuō)說(shuō)Python中常用的字符串和數(shù)組方法(面試官常問(wèn))

    一文詳細(xì)說(shuō)說(shuō)Python中常用的字符串和數(shù)組方法(面試官常問(wèn))

    這篇文章主要為大家詳細(xì)介紹了Python中常用的字符串和數(shù)組方法,這也是面試中常常被問(wèn)起的問(wèn)題,下面小編就和大家詳細(xì)介紹一下吧,有需要的可以了解下
    2026-03-03
  • Pygame游戲開發(fā)之太空射擊實(shí)戰(zhàn)添加圖形篇

    Pygame游戲開發(fā)之太空射擊實(shí)戰(zhàn)添加圖形篇

    相信大多數(shù)8090后都玩過(guò)太空射擊游戲,在過(guò)去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來(lái)自己動(dòng)手實(shí)現(xiàn)它,在編寫學(xué)習(xí)中回顧過(guò)往展望未來(lái),在本課中,我們將討論如何在游戲中使用預(yù)先繪制的圖形
    2022-08-08
  • python pycharm的安裝及其使用

    python pycharm的安裝及其使用

    這篇文章主要介紹了python pycharm的安裝及其使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python利用pydub進(jìn)行音頻處理的完整指南

    Python利用pydub進(jìn)行音頻處理的完整指南

    pydub是一個(gè)輕量級(jí)的音頻處理庫(kù),安裝方便,使用簡(jiǎn)單,本文主要為大家詳細(xì)介紹了Python如何使用處理一個(gè)大體積音頻文件,感興趣的小伙伴可以了解下
    2025-09-09
  • python3.7.3版本和django2.2.3版本是否可以兼容

    python3.7.3版本和django2.2.3版本是否可以兼容

    在本篇文章里小編給大家整理的是一篇關(guān)于python3.7.3版本和django2.2.3版本是否可以兼容的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-09-09
  • 如何使用Numpy創(chuàng)建三維矩陣

    如何使用Numpy創(chuàng)建三維矩陣

    這篇文章主要介紹了如何使用Numpy創(chuàng)建三維矩陣問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python將鄰接矩陣輸出成圖的實(shí)現(xiàn)

    python將鄰接矩陣輸出成圖的實(shí)現(xiàn)

    今天小編就為大家分享一篇python將鄰接矩陣輸出成圖的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Python使用ThreadPoolExecutor一次開啟多個(gè)線程

    Python使用ThreadPoolExecutor一次開啟多個(gè)線程

    通過(guò)使用ThreadPoolExecutor,您可以同時(shí)開啟多個(gè)線程,從而提高程序的并發(fā)性能,本文就來(lái)介紹一下Python使用ThreadPoolExecutor一次開啟多個(gè)線程,感興趣的可以了解一下
    2023-11-11
  • 使用Python開發(fā)一個(gè)Word文檔批量合并工具

    使用Python開發(fā)一個(gè)Word文檔批量合并工具

    我們經(jīng)常需要將多個(gè)Word文檔合并成一個(gè)完整的文檔,無(wú)論是整理項(xiàng)目報(bào)告、匯編會(huì)議紀(jì)要,還是制作培訓(xùn)材料,手動(dòng)復(fù)制粘貼不僅效率低下,還容易出錯(cuò),今天,我將分享如何使用Python開發(fā)一個(gè)功能完善的Word文檔批量合并工具,需要的朋友可以參考下
    2025-05-05

最新評(píng)論

南部县| 塔城市| 岑巩县| 贵溪市| 通江县| 屯留县| 上栗县| 宿州市| 鄢陵县| 甘德县| 莱芜市| 泸西县| 平和县| 利辛县| 望谟县| 鄢陵县| 休宁县| 方正县| 肥东县| 库伦旗| 乌拉特前旗| 河南省| 青神县| 惠安县| 梧州市| 广东省| 中卫市| 中方县| 营山县| 东宁县| 普格县| 海盐县| 勃利县| 灵山县| 科尔| 阿克陶县| 措美县| 华蓥市| 闻喜县| 甘泉县| 长垣县|