GeoHD - 一種用于智慧城市熱點探測的Python工具箱
詳細原理請參考:Yan, Y., Quan, W., Wang, H., 2024. A data‐driven adaptive geospatial hotspot detection approach in smart cities. Trans. GIS tgis.13137.
代碼下載:下載
1. 簡介
在城市數據分析領域,研究對象的空間分布通常呈現出不均勻性,具有明顯的空間異質性。密度較高的點數據往往代表著區域內事件的熱點。因此,城市區域內熱點的探測成為了城市研究的一個焦點話題,對于規劃者、研究人員以及管理部門具有重要的價值。以犯罪熱點的探測為例,通過對城市犯罪歷史數據的分析可以揭示出犯罪活動發生的原因,進而有助于相關管理部門制定更加有效的犯罪預防策略。在過去的研究中,已經有多種經典的聚類算法或熱點分析方法被應用于城市熱點探測,比如Getis-Ord空間統計、k均值聚類以及核密度分析等。此外,針對特定研究背景,如交通出行、交通事故和犯罪等,許多學者也提出了相應的熱點探測方案。盡管已經出現了一些優秀的基于特定背景的熱度可視化工具,如基于交通的transbigdata,但當前的熱點探測研究仍然存在一些挑戰。現有的研究往往局限于單一的研究背景,缺乏完整的熱點探測分析方案。此外,現有的地理處理工具主要停留在熱度可視化的層面,難以提供精確的熱點定位。由于地理空間數據的復雜性,不同背景的研究者可能會面臨操作上的困難,而目前的地理信息系統軟件如ArcGIS則需要較高的學習成本。因此,迫切需要開發一種普適性且易于操作的開源熱點探測工具,以滿足不同研究者對于城市熱點分析的需求。
2. 功能
GeoHD是一個用于地理空間熱點探測、可視化與分析的Python工具包。其主要目標在于提供一個易于使用且適用于不同城市研究背景的熱點探測與分析工具。GeoHD的工作原理如圖1所示。首先,GeoHD對輸入數據進行清晰可視化與統計分析,從而獲得核密度估計(KDE)結果。接下來,采用窗口分析方法計算柵格數據的像元最大值表面,然后執行密度場表面與像元最大值表面的地圖代數差運算,以得到相減結果,即非負值表面。在此階段,相減結果中每個窗口中為零的位置即代表當前區域的局部熱點位置。完成窗口分析后,采用重分類算法將極值區域與除極值以外的區域分為兩類。最終,通過該過程獲得的極值區域即為當前區域內事件發生的熱點。
目前,GeoHD主要包含以下幾種功能:
- 研究數據真實分布的可視化:通過輸入點數據,實現對點數據真實地理空間位置的可視化。
- 固定帶寬與自適應帶寬的核密度分析:實現了經典的固定帶寬核密度估計以及優化的自適應帶寬核密度估計,同時提供可調節參數與清晰可視化。
- 基于固定帶寬與自適應帶寬的地理空間熱點探測:通過結合密度分析和柵格代數,實現了局部研究熱點的提取,最終得到熱點探測結果。
- 平面點模式分析:提供了針對熱點分布的Ripley G、Ripley F、Ripley J、Ripley K、Ripley L函數圖像繪制功能。
- 矩陣網格與六邊形網格的熱點分析:實現了基于矩陣網格與六邊形網格對空間點數據進行統計,并提供清晰可視化。
GeoHD的開發填補了當前熱點探測工具在普適性和易用性方面的空白,為城市研究領域提供了一種全面且有效的分析工具。
3. 使用案例
最近一項基于GeoHD的智慧城市下的自適應熱點探測的研究證明了GeoHD工具包的實用性。該研究利用哈爾濱市出租車GPS數據和紐約市犯罪數據進行了熱點探測。研究表明,這種熱點探測方法能夠精確識別城市環境中的熱點區域,而不是簡單地劃分熱點區域。該方法能夠根據數據的空間分布特征動態調整參數,從而提高了熱點檢測的準確性和相關性。這使得研究者能夠進行更精確的小尺度分析,并根據熱點的具體地理位置做出及時的事件特定準備和部署。
4. 教程
文檔
我們建議您從文檔開始您的 GeoHD 之旅。
使用 pip 安裝
該軟件包在 PyPi 中可用,需要 Python 3.11 或更高版本。可以使用以下方法進行安裝:
$ pip install GeoHD
用法
$ cd test
$ python -m test_automation
您還可以在 Jupyter Notebook 中運行test.ipynb
在真實地圖上可視化熱點:
visualize_shapefile('data.shp', output_image_path='custom_image.png')
解析平面點模式:Ripley G、Ripley F、Ripley J、Ripley K、Ripley L 等。
plot_g_function('data.shp')
將研究區域劃分為四邊形(六邊形)網格,并根據劃分區域內點數據的密度實現快速可視化。
create_cell_zones(area_file, crash_file)
create_hex_grid_zones(area_file, crash_file)
create_cell_heatmap(area_file, crash_file)
create_hexagonal_heatmap(area_file, crash_file)
實現固定帶寬的核密度分析:
density_raster = process_shapefile(input_file_path)
plot_density_raster(density_raster,output_data_path, *gpd.read_file(input_file_path).total_bounds)
用于實現自適應帶寬的核密度分析:
adaptiveKDE(shp_file,output_data_path)
熱點識別:
hotspots = extract_hotspots(density_data_path)
visualize_hotspots(np.load(density_data_path), hotspots)
5.引用
github項目地址:如果喜歡的話請給項目一個star
論文請引用:
Yan, Y., 2024. GeoHD: A Python Toolkit for Geospatial Hotspot Detection, Visualization, and Analysis. SSRN Electron. J.
Yan, Y., Quan, W., Wang, H., 2024. A data‐driven adaptive geospatial hotspot detection approach in smart cities. Trans. GIS tgis.13137.