绘制广播新闻的地理空间模式
#python #geoint #spatial #arcgis

绘制广播新闻的地理空间模式,使地理空间分析师能够深入了解常见和不寻常的地理空间模式。我们决定使用名为“语调和语言的全球数据库事件”(GDELT)作为基础真理的最全面的新闻集之一。

全球新闻报道的地理

对于非地理空间专家来说,了解这种庞大知识图的地理空间模式通常很难。机器学习算法实时从网站中提取文章和功能。地理编码发动机匹配的位置提取了超过一100万个著名的地点名称。一篇文章提到像“纽约”这样的地方导致了提取的功能位置。但是,本文不必针对命名位置具体。例如,一篇有关“共同大流行对资本市场的影响”的文章。提到“纽约也不例外”。我们应该期望一些假阳性,但是所有提取的位置的总和应反映出地理空间模式,并给我们一个粗粒的概述。

使用GeoProtests API访问地理空间特征

geoprotests API提供了与抗议和示威相关的广播新闻的现成的地理空间特征。您可以使用这些地理空间功能来构建各种映射和地理空间应用。

每个地理空间结果都支持GEOJSON和ESRI功能集格式。所有端点都支持用于过滤结果的可选日期参数。为了获得最佳性能,无服务的云倒倒数计算了午夜至凌晨1点之间的最后24小时的地理空间聚集。无服务器功能保存这些地理空间功能,昨天应该是最新的可用日期。在未指定日期的情况下,我们计算过去24小时的地理空间特征。

增加您的开发环境

您需要激活快速API帐户。请查看RapidAPI Account Creation and Management Guide以获取更多详细信息。

使用您选择的武器设置基于Python的开发环境。使用PIP创建虚拟环境是一种简单的方法。

python -m venv geoint

# Linux
source geoint/bin/activate

# Windows
geoint/Scripts/activate

Python模块请求可轻松且优雅地访问HTTP功能。您需要使用PIP安装此模块。

pip install requests

访问2022年12月31日的广播新闻

热点端点提供了对统计意义的命名位置的访问权限。提到这些位置的新闻伯爵定义了重要性。

# author: Jan Tschada
# SPDX-License-Identifer: Apache-2.0
import requests

url = 'https://geoprotests.p.rapidapi.com/hotspots'

querystring = {
  'date': '2022-12-31',
  'format': 'geojson'
}

# Authenticate: https://rapidapi.com/auth
api_key = '<SIGN-UP-FOR-KEY>'
headers = {
  'x-rapidapi-host': 'geoprotests.p.rapidapi.com',
  'x-rapidapi-key': api_key
}

geojson_response = requests.request('GET', url, headers=headers, params=querystring)
geojson_response.raise_for_status()
features = geojson_response.json()

功能字典代表Geojson格式的命名位置。

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": 41415,
      "geometry": {
        "type": "Point",
        "coordinates": [
          37.6156,
          55.7522
        ]
      },
      "properties": {
        "OBJECTID": 41415,
        "name": "Moscow, Moskva, Russia",
        "timestamp": "2022-12-31T00:00:00",
        "count": 77
      }
    }
  ]
}

访问汇总的广播新闻

空间聚集是六边形地理空间特征,其特定属性代表了新闻的数量,提到位置位于六角形网格单元中。空间分析师的使用映射功能可视化这些空间聚集的热点和冷点。

让我们使用ArcGIS强大的映射功能,并将汇总的广播新闻视为功能集。您需要为ESRI指定输出格式。

# author: Jan Tschada
# SPDX-License-Identifer: Apache-2.0
url = 'https://geoprotests.p.rapidapi.com/aggregate'

querystring = {
  'date': '2022-12-31',
  'format': 'esri'
}

headers = {
  'x-rapidapi-host': 'geoprotests.p.rapidapi.com',
  'x-rapidapi-key': api_key
}

esri_response = requests.request('GET', url, headers=headers, params=querystring)
esri_response.raise_for_status()
aggregated_features = esri_response.json()

汇总特征代表相应的六边形网格细胞作为Python词典。您需要将Arcgis Python模块设置为开发环境。包含的地图小部件为您的Jupyter笔记本电脑环境提供了强大的映射功能。跟随Install and Setup Guide

# author: Jan Tschada
# SPDX-License-Identifer: Apache-2.0
from arcgis.gis import GIS
from arcgis.features import FeatureSet

# Create a FeatureSet from the features
aggregated_featureset = FeatureSet.from_dict(aggregated_features)

# Anonousmly connect to ArcGIS Online
gis = GIS()

# Create a simple map view
map_view = gis.map('Europe')

# Add the FeatureSet as a layer
map_view.add_layer(aggregated_featureset)

Map view in a Jupyter notebook

您应该使用专用渲染器实例来调整功能的渲染。渲染器是add_layer方法的可选参数。但是,您也可以使用其他方法来映射聚合功能。启用空间的数据帧可与地图视图结合使用绘图功能。这样您就可以轻松地定义支持自然班级休息的渲染。

# Create a simple map view
map_view = gis.map('Europe')

# Add the FeatureSet as a layer
aggregated_featureset.sdf.spatial.plot(map_view, 
                                      renderer_type='c',
                                      method='esriClassifyNaturalBreaks',
                                      class_count=5, 
                                      col='count', 
                                      cmap='YlOrRd',
                                      alpha=0.35)

生产的地图显示了俄罗斯莫斯科的红点,正如我们所期望的。

Map of aggregated news related to protests

欢迎任何反馈,继续映射!

随时尝试:geoprotests API