当前位置: 首页 > 知识库问答 >
问题:

根据纬度/经度从. txt中提取时间序列

逑何平
2023-03-14

之前已经回答了一个类似的问题,但是我找不到这个问题的解决方案:

我有一个带有辐照度值的.txt,我想在 csv 文件中提取特定纬度和纬度的辐照度值的时间系列。.txt文件的(头部)如下所示:

NCOLS 839
NROWS 679
XLLCORNER 112.025
YLLCORNER -43.975
CELLSIZE 0.05
NODATA_VALUE -999
-999 -999 -999 -999 -999 -999 -999 -999 -999 -999 -999 -999 -999 -999 -999  -999 -999 -999 -999...

该文件没有lon和lat列(这将是提取数据的简单方法)。然而,它有一个标题,如:NCOLS、NROWS、XLLCORNER、…但是我不知道如何提取像这样的文件的lat/长时间序列。

此外,一旦提取了特定lat/Long的时间序列,我想用该序列的前一个和下一个值的平均值替换可能的nodata(-999)。

我使用的是R版本3.2.4。

一个. txt文件的可下载链接。请注意这个文件是针对特定的年/月/日/小时的。一年中的文件和小时一样多。http://www.mediafire.com/download/t7xl9adxz3764f3/solar_dni_20130102_00UT.txt

共有1个答案

井通
2023-03-14

该文件是ESRI ASCII光栅格式文件。将其名称更改为solar.asc(不幸的是,. asc似乎很重要),然后安装SDMTools包。完成后,您可以这样做:

library(SDMTools)

dat <- read.asc("solar.asc")

df <- asc2dataframe("solar.asc")

它肯定是栅格数据(不是时间序列)。

更新

因为你需要一个完整的演练。

library(SDMTools)

# make sure you're in the same directory as your file
getwd()

## [1] "/Path/to/the/directory/with/the/data"

# make sure your original file is in the directory
file.exists("solar_dni_20130102_00UT.txt")

## [1] TRUE

# since the SDMTools functions seem to need ".asc" at the end
file.rename("solar_dni_20130102_00UT.txt",
            "solar_dni_20130102_00UT.asc")

# this reads it as a raster
dat <- read.asc("solar_dni_20130102_00UT.asc")

# check it out
str(dat)

##  asc [1:839, 1:679] NA NA NA NA NA NA NA NA NA NA ...
##  - attr(*, "xll")= num 112
##  - attr(*, "yll")= num -44
##  - attr(*, "cellsize")= num 0.05
##  - attr(*, "type")= chr "numeric"


# this reads it as a data.frame
df <- asc2dataframe("solar_dni_20130102_00UT.asc")

## working with solar_dni_20130102_00UT.asc ...

# check it out
str(dat)

##  asc [1:839, 1:679] NA NA NA NA NA NA NA NA NA NA ...
##  - attr(*, "xll")= num 112
##  - attr(*, "yll")= num -44
##  - attr(*, "cellsize")= num 0.05
##  - attr(*, "type")= chr "numeric"

# put things back the way they were
file.rename("solar_dni_20130102_00UT.asc",
            "solar_dni_20130102_00UT.txt")

我们甚至可以证明这是一个ESRI ASCII栅格:

quick.map(dat, 0.5)

W00t!澳大利亚(尽管文件中的lat/long已经给出了答案)。

更新 #2

您可以通过执行以下操作来简化提取:

library(raster)

r <- raster.from.asc(dat)

as.numeric(extract(r, cbind(150.757, -26.918)))
## [1] 973
 类似资料:
  • 问题内容: 在Python中使用GDAL,如何获取GeoTIFF文件的纬度和经度? GeoTIFF似乎没有存储任何坐标信息。而是存储XY原点坐标。但是,XY坐标不提供左上角和左下角的纬度和经度。 看来我需要做一些数学运算才能解决这个问题,但是我不知道从哪里开始。 执行此操作需要什么程序? 我知道该方法对此很重要,但是,我不知道该怎么做。 问题答案: 要获取您的Geotiff角的坐标,请执行以下操作

  • 我试图从这个结果页面的“Show Map”按钮中刮出纬度和经度数据:https://www.psychologytoday.com/us/therapists/60148/374863?sid=5d01e84909804&ref=2&tr=resultsName:https://www.psychologytoday.com/us/therapists/60148/374863?sid=5d01e

  • 我有一个onCreate的活动,它计算您的位置和附近的事件之间的距离,我使用lastNotnloceto获取当前设备位置并在谷歌地图上标记它,但我需要它来写经度和纬度它的方法之外用于计算距离。 我已经使用LocationManager来获取粗略的坐标,但这些坐标不够准确,对于距离不到半英里的东西来说,距离为50英里。我目前拥有它,因此将覆盖从LocationManager获得的经度和纬度,但它没有

  • 问题内容: 我有一个按照以下示例结构的mysql表: 现在我想做的是创建一个查询,该查询将在搜索位置的选定公里内选择结果 因此,假设他们搜索“灰色河流”,然后选择“在20公里以内找到所有结果” 它显然应该选择“灰河”,但也应根据经度和纬度选择灰河20公里以内的所有位置。 我真的不知道该怎么做。我已经读过haversine公式,但不知道如何将其应用于mysql SELECT。 任何帮助将非常感激。

  • Highmaps 从 1.1.0 开始支持经纬度定位功能,该功能依赖第三方库 proj4js(需要在 Highmaps 之前引入),最新版的文件可以从 cdnjs 上获取 <script src="https://cdn.bootcdn.net/ajax/libs/proj4js/2.7.2/proj4.js"></script> 有了经纬度支持后,我们可以通过 lon 和 lat 属性来指定经

  • 我基本上想把gsm模块作为短信发送的经纬度坐标提取到一部Android智能手机上…… 我写了一个简单的应用程序,它以纬度和经度为输入,并使用app Inventor在地图上显示 当我收到来自特定号码的短信时,我想基本上复制提取的纬度和经度自动到我的android应用程序的lat和long字段 我怎么才能做到这一点....