• 天地图全国幼儿园数据下载与处理分析


    概述

    在看天地图服务资源的时候看到有个“幼儿园”的数据,好奇点开看了下,下载下来数据差看了下,数据质量还不错。本篇文章给大家分享一下这个数据的处理以及一些简单的统计分析结果。

    数据下载

    通过地址https://service.tianditu.gov.cn/#/Detail?mc=幼儿园&id=7495获取数据的信息与下载地址,如下图所示。点击服务地址下载数据。

    image.png

    数据处理

    1. 转换为geojson

    上述地址返回的是json格式的数据,如下图所示。

    image.png

    通过js将其转为geojson。转换代码如下:

    class Geojson {
      constructor(features = []) {
        this.type = "FeatureCollection";
        this.features = features;
      }
    }
    
    fetch("./yry.json")
      .then((res) => res.json())
      .then((res) => {
        res = res.data.results.map(({ gbcode, geojson, name }) => {
          geojson.properties = { gbcode, name }
          geojson.geometry = {
            type: "Point",
            coordinates: geojson.geometry.coordinates[0]
          }
          return geojson;
        });
        const json = new Geojson(res)
        console.log(JSON.stringify(json))
      });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2. 坐标转换

    数据转换后用QGIS打开,并叠加高德地图作为底图,发现数据有些偏移,借助Geohey插件将坐标转换为火星坐标系。

    image.png

    转换前后位置示意比较图,转换后蓝色的点就跟高德地图的位置就一致了。

    image.png

    3. 数据处理

    将转换后的数据导入到postgis数据库中,并添加provcity两个字段,跟城市面数据进行空间关联,并赋值。

    update base_youeryuan set prov = (
    	select a.province from base_city a where st_intersects(a.geom, base_youeryuan.geom)  limit 1
    ), city = (
    	select a.name from base_city a where st_intersects(a.geom, base_youeryuan.geom)  limit 1
    ) where 1=1;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4. 数据分析

    先通过省做一个分组统计,统计sql如下:

    -- 进行分省统计
    select prov, count(1) as num from base_youeryuan 
    where prov is not null 
    group by prov 
    order by num desc; 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    统计后的结果如下图,不难看出:1.人后大省的幼儿园比较多;2.幼儿园比较多的省份小朋友比较多,新生儿出生率对应的也会比较高。3.北上的人口比较多,但是幼儿园比较少,说明小孩子比较少,大家生孩子的意愿或积极性明显很低。
    image.png

    根据省分析完了我们在根据市做一个分组统计,由于市比较多,我们只取了前20作为结果,统计sql如下:

    select city, count(1) as num from base_youeryuan 
    where city is not null 
    group by city
    order by num desc;
    limit 20;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    统计后结果如下图。做个简单的分析:1.重庆依然成为了人口、新生儿第一的城市;2.幼儿园的数量代表着小孩子的多少,在前二十的城市里面,广东有三个城市进入,分别是广州、深圳、湛江,也从另外一个侧面说明了南方人生孩子的意愿比较强。
    image.png

    **申明:**文章中的的数据和分析仅供教学学习,不代表实际的情况与分析结论。

  • 相关阅读:
    项目中记住账号后选中账号input框背景色被改变问题记录
    hive表中连续N天问题的实现
    敲电子木鱼微信小程序源码下载+搭建教程
    用arduino开发梅树派Raspberry Pi Pico
    Android Studio 实现登录注册-源代码 (连接MySql数据库)
    DJYGUI系列文章十一:GDD矩形区域运算
    UML——类图详解
    关于javaScript的学习总结
    利用UU对GitHub国内加速优化访问
    idea 集成git后一些场景的使用方法
  • 原文地址:https://blog.csdn.net/GISShiXiSheng/article/details/136724204