POI点数据获取与NOAA(美国海洋和大气管理局)气象数据获取

NOAA(美国海洋和大气管理局)提供GHCND(全球历史气候学网络)月度摘要数据库,可以满足全球陆地区域历史月度温度,降水和降雪记录的研究需求。

GHCND月度摘要数据库数据源自GHCN-Daily数据库,经过质量审查与二次加工制成,主要包含18个气象要素,包括温度(每月平均值和极端值),降水(每月总数,极端值和满足各种数量阈值的天数),降雪,最大雪深等。GHCND月度摘要数据库与它对应的每日数据库一样,包含分布在各大洲的40000多个站点的数十个观测值。

基于世界气象组织(WMO)第40号决议(Cg-12),世界气象组织(WMO)达成了世界天气监视计划协议,互相交换气象数据,GHCN-Daily数据库提供的数据即基于此计划。WMO成员国可以免费且不受限制的使用或导出数据用于研究,教育和其他非商业活动。

本节以台风山竹期间获取广东省内数据绘制降雨情况为例。点击数据库连接会得到以下文件列表,提供从1901年至今的气象数据,操作步骤如下:

  1. 在文件列表中找到ish-history.csv文件,文件提供了29726个气象站点,包含站点ID,站点经纬度,站点高程,站点所在城市,站点所在国家(CH代表中国),站点数据起迄时间。根据需求在excel内进行查找,筛选出想要的数据站点。从中筛选出具有2018年9月16日至9月18日数据的38个广东省范围内数据站。
  2. 点进2018年份文件夹,将筛选后的数据站原始数据下载下来并解压。对解压后的文件进行处理,此时解压出来的文件名称格式如“578660-99999-2018”,579570代表站点ID,99999是统一的命名,2018代表数据年份。此时文件并不能直接使用,官方提供了解析脚本ishJava.java,需要安装JDK环境使用,并在同路径下添加ishJava.class类,cmd下执行命令java -classpath . ishJava 578660-99999-2019 578660-99999-2010.out。这里提供了编写好的脚本,调用deal_with_download_file(root_source)函数即可处理路径下所有文件,输出成.out格式。

  1. 此时提供的数据是2018年一整年的数据,依据时间条件进行过滤,调用函数filter_time(root_source, 201809160000, 201809170000)筛选出三天的气象数据,得到筛选后的结果result.txt。
  2. 依据处理结果进行筛选,Arcgis处理后得到降雨插值图。

代码开源至:https://github.com/yemanzhongting/get_rain_data

  1. POI数据获取

POI是Point of Interest的缩写,中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。以百度地图为例,将POI分为八类:吃喝、住宿、出行、银行、娱乐、生活、景点、购物,再细一点可以选择大类中的类目。百度地图、高德地图等平台提供了API接口,对接口传入必要的参数,就能返回需要的数据。本节以抓取百度地图广州市医院位置为例进行讲解,主要步骤如下:

  1. 百度地图API Key的获取。API Key是百度地图API必要的请求参数,百度地图开发者平台提供申请入口。
  2. 请求参数。Query参数,即查询的POI种类,本例参数为医院;bounds参数,即检索的区域,格式为lat1,lng1,lat2,lng2,参数1表示左下角经纬度,参数二表示右下角经纬度;page_size参数,即返回的最大页面数,默认最大为20;page_num参数,即查询第几页的返回数据;region参数,即检索的城市名称;output参数,即查询结果的格式,这里选择json格式;ak参数,即申请的秘钥。一个完整的请求连接格式如下:http://api.map.baidu.com/place/v2/search?query=医院&page_size=20 &page_num={page_index}&region=广州市&&output=json&ak=yourak',详细的脚本代码参见github。
  3. 坐标纠偏。由于百度坐标进行了一定加密处理,直接使用坐标会带来很明显的偏差,需要将经纬度从百度坐标系(BD-09)纠偏至CGCS2000或WGS84(两者均为大地坐标系,差异很小),以成都地铁站店为例,给出了纠偏的效果。
  1.  

图 纠偏对比

图 抓取到的POI数据前端交互展示

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java的POI库是一个功能强大的开源库,用于处理Microsoft Office格式的文档,包括Excel。使用POI库可以轻松地读取和修改Excel文件。 要使用POI获取Excel数据,首先需要引入POI的相关依赖包。可以从Apache的官方网站上下载最新版本的POI。 一旦POI库被引入项目中,就可以开始使用它来操作Excel文件。在获取Excel数据之前,首先需要创建一个Workbook对象,用于表示整个Excel工作簿: ```java Workbook workbook = new XSSFWorkbook(new FileInputStream("文件路径")); ``` 然后可以通过Workbook对象获取特定的Sheet对象,用于表示Excel工作簿中的某个Sheet: ```java Sheet sheet = workbook.getSheetAt(sheetIndex); ``` 在获取了Sheet对象之后,可以使用该对象获取特定的行和单元格数据: ```java Row row = sheet.getRow(rowIndex); Cell cell = row.getCell(cellIndex); ``` 通过这种方式,可以逐行或逐列地遍历整个Excel文件,并获取其中的数据获取到Cell对象后,可以通过getCellType()方法来确定单元格的数据类型,如数值、字符串、日期等。然后根据具体的数据类型,使用不同的方法来获取单元格的值,如: ```java if (cell.getCellType() == CellType.STRING) { String cellValue = cell.getStringCellValue(); } else if (cell.getCellType() == CellType.NUMERIC) { double cellValue = cell.getNumericCellValue(); } ``` 最后,记得在程序结束后关闭Workbook对象,以释放资源: ```java workbook.close(); ``` 使用POI获取Excel数据需要注意的是,POI库的API文档提供了更详细的使用说明和示例代码,可以参考官方文档进一步了解。另外,POI还提供了将数据写入Excel文件的功能,可以使用相应的方法实现数据写入Excel的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值