标签: proj

如何在ggplot2中正确绘制投影网格化数据?

多年来我一直用它ggplot2来绘制气候网格数据.这些通常是预计的NetCDF文件.单元格在模型坐标中是方形的,但取决于模型使用的投影,在现实世界中可能不是这样.

我通常的方法是首先在合适的常规网格上重新映射数据,然后绘图.这引入了对数据的小修改,通常这是可以接受的.

但是,我已经确定这已经不够好了:我想直接绘制投影数据而不重新映射,因为其他程序(例如ncl)可以,如果我没有弄错的话,可以不触及模型输出值.

但是,我遇到了一些问题.我将从下面逐步详细介绍可能的解决方案,从最简单到最复杂,以及它们的问题.我们能克服它们吗?

编辑:感谢@ lbusett的回答,我得到了这个包含解决方案的好功能.如果您喜欢,请upvote @ lbusett的回答!

初始设置

#Load packages
library(raster)
library(ggplot2)

#This gives you the starting data, 's'
load(url('https://files.fm/down.php?i=kew5pxw7&n=loadme.Rdata'))
#If you cannot download the data, maybe you can try to manually download it from http://s000.tinyupload.com/index.php?file_id=04134338934836605121

#Check the data projection, it's Lambert Conformal Conic
projection(s)
#The data (precipitation) has a 'model' grid (125x125, units are integers from 1 to 125)
#for each point a lat-lon value is also assigned
pr …
Run Code Online (Sandbox Code Playgroud)

r netcdf proj ggplot2 map-projections

20
推荐指数
2
解决办法
3240
查看次数

CPL_transform(x, crs, aoi, pipeline, reverse) 中的错误:OGRCreateCoordinateTransformation() 返回 NULL:PROJ 可用?

我正在使用 ubuntu 18.04 并且以下代码生成错误

library(sf)
library(tmap)
library(dplyr)
library(raster)
#sudo apt install libproj-dev
#devtools::install_github("robinlovelace/geocompr")
library(spDataLarge)
if(!file.exists("e.tif"))
  download.file("https://github.com/geocompr/geocompkg/releases/download/0.1/e.tif",
                "e.tif")
elev = raster("e.tif")
urban = spData::urban_agglomerations %>% 
  filter(year == 2030) %>% 
  dplyr::select(population_millions) 
summary(urban)

tm_shape(elev) +
  tm_raster(breaks = c(-10000, 0, 10, 50, 100, 10000)) +
  tm_shape(urban) +
  tm_dots(size = "population_millions", scale = 0.5)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Error in CPL_transform(x, crs, aoi, pipeline, reverse) : 
  OGRCreateCoordinateTransformation() returned NULL: PROJ available?
In addition: Warning message:
In CPL_transform(x, crs, aoi, pipeline, reverse) :
  GDAL Error 1: No PROJ.4 translation …
Run Code Online (Sandbox Code Playgroud)

r proj tmap

10
推荐指数
1
解决办法
2686
查看次数

如何使用PROJ.4将坐标从WGS84转换为投影中的坐标?

我在WGS84,我想转变为一个地图投影使用SWEREF99 TM协调GPS坐标PROJ.4在Java或Proj4js在JavaScript中.

很难找到PROJ.4的文档以及如何使用它.如果您有良好的链接,请将其作为评论发布.

SWEREF99 TM的PROJ.4参数是+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs

我试图使用PROJ.4 Java库进行转换Lat: 55° 00’ N, Long: 12° 45’ E并尝试使用此代码:

String[] proj4_w = new String[] {
 "+proj=utm",
 "+zone=33",
 "+ellps=GRS80",
 "+towgs84=0,0,0,0,0,0,0",
 "+units=m",
 "+no_defs"
};

Projection proj = ProjectionFactory.fromPROJ4Specification(proj4_w);  

Point2D.Double testLatLng = new Point2D.Double(55.0000, 12.7500);
Point2D.Double testProjec = proj.transform(testLatLng, new Point2D.Double());
Run Code Online (Sandbox Code Playgroud)

这给了我一点,Point2D.Double[5197915.86288144, 1822635.9083898761]但我应该N: 6097106.672, E: 356083.438 是我做错了什么?我应该使用什么方法和参数呢?

正确的值取自Lantmäteriet.

我不确定是否proj.transform(testLatLng, new Point2D.Double());使用正确的方法.

java wgs84 proj map-projections proj4js

9
推荐指数
1
解决办法
7123
查看次数

带有WMS和自定义投影的传单地图

我已经使用Leaflet和来自WMS服务的切片实现了一个地图.它们提供了一系列预测,其中一个可用于标准Leaflet EPSG:4326.

然而,地图看起来有点扭曲,我调查其他一个预测会更好.地图的供应商使用EPSG:32624,但我似乎无法正确地进行投影.

这是完整列表:EPSG:32624,EPSG:32619,EPSG:32620,EPSG:32621,EPSG:32622,EPSG:32623,EPSG:32624,EPSG:32625,EPSG:32626,EPSG:32627,EPSG:4326, EPSG:3413,EPSG:3575

我有一个小提琴:http://jsfiddle.net/uyrv2j7f/2/

有两个地图,最上面的一个是使用所需的投影,但不是真的有效.底部是使用工作但扭曲的投影.

我很确定,我需要编辑crs的配置.但到了什么?哪里可以找到信息?

我在这里找到了第一部分:http://spatialreference.org/ref/epsg/wgs-84-utm-zone-24n/ - 其他我用其他投影的例子.

var crs = new L.Proj.CRS('EPSG:32624',
    '+proj=utm +zone=24 +ellps=WGS84 +datum=WGS84 +units=m +no_defs', {
    resolutions: [
        2116.670900008467, 
        1058.3354500042335, 
        529.1677250021168, 
        264.5838625010584, 
        132.2919312505292, 
        66.1459656252646, 
        26.458386250105836, 
        13.229193125052918, 
        6.614596562526459, 
        2.6458386250105836, 
        1.3229193125052918, 
        0.6614596562526459, 
        0.33072982812632296, 
        0.21166709000084669
    ],
    transformation: new L.Transformation(1, -500, -1, 7017000)
});
Run Code Online (Sandbox Code Playgroud)

希望有人可以帮助我.

另外:Leaflet通常对我来说就像一个魅力,是这个案例的首选图书馆.但是,如果有人能够帮助使用不同的图书馆,那么我会非常感兴趣.....

更新:tinproject提供了一些指示,我去寻找,这个版本更接近想要的结果:http://jsbin.com/rehoxu/5/edit?html,css,js,output

我仍然喜欢有关如何真正定义自定义投影变量的输入...

proj map-projections proj4js leaflet

8
推荐指数
0
解决办法
1361
查看次数

Cartopy 无法识别 Windows 上安装的 PROJ 的 GEOS

我正在尝试在 Windows 上安装 Cartopy。我已经从他们的网站安装了所有依赖项,但是当我去运行时

pip install Cartopy
Run Code Online (Sandbox Code Playgroud)

我得到:

 Complete output (5 lines):
  setup.py:117: UserWarning: Unable to determine GEOS version. Ensure you have 3.7.2 or later installed, or installation may fail.
    warnings.warn(
  setup.py:166: UserWarning: Unable to determine Proj version. Ensure you have 8.0.0 or later installed, or installation may fail.
    warnings.warn(
  Proj version 0.0.0 is installed, but cartopy requires at least version 8.0.0
Run Code Online (Sandbox Code Playgroud)

我已经跑了并且成功完成了

pip install proj
pip install geos
Run Code Online (Sandbox Code Playgroud)

python pip geos proj cartopy

8
推荐指数
1
解决办法
1万
查看次数

PROJ.4库和OSGB36

一切顺利

我正在尝试使用proj.4库将纬度/经度坐标转换为OSGB36 x和y.

还有其他人成功完成了吗?我需要填充srcPrj4String和destPrj4String变量,例如

string srcPrj4String ="+ proj = longlat + ellps = WGS84 + datum = WGS84 + no_defs";
string destPrj4String ="+ proj = utm + zone = 11 + ellps = GRS80 + datum = NAD83 + units = m";

但我无法弄清楚destPrj4String应该与OSGB36一起使用 - 我知道数据应该是+ datum = OSGB36,但我尝试的一切都不起作用

有任何想法吗?

提前谢谢了

莱迪

gis proj proj4js

7
推荐指数
2
解决办法
5188
查看次数

Java中不同Map投影之间的转换

在我的GIS应用程序中,数据有时存储在"Google Mercator"(以米为单位)中,有时存储在WGS84 LatLon中.我想要一个可靠的库来轻松地以"科学"的方式转换这些数据,而不是手动搞乱它,冒着很大的错误.

我遇到过Proj4,显然能够做到这一点:http://trac.osgeo.org/proj

但我找不到类似的Java库(或Groovy).鉴于这些预测在在线应用中越来越普遍,这样的项目将是非常有益的.一个小罐子会很棒:-)

有一个Java端口,但没有任何文件可供下载:http://www.jhlabs.com/java/maps/proj/

基本上我需要做这种转换:http://proj4js.org

有关如何在Java中执行此操作的任何想法?

谢谢,Mulone

java gis proj map-projections

7
推荐指数
1
解决办法
4812
查看次数

无法安装“proj4”包,因为在标准搜索位置找不到 libproj 和/或 proj_api.h

我想安装ggalt需要proj4安装软件包的软件包,但是当我安装时proj4它会抛出错误libproj and/or proj_api.h not found in standard search locations

\n\n

我的电脑是Mac,安装时PROJ.4使用的brew install proj是R的版本是3.6.0_2。我在网上搜索了这个问题,但没有找到解决的方法。我不是编码员,刚刚开始学习R,所以我现在不知道该怎么做。

\n\n

错误显示如下:

\n\n
* installing *source* package \xe2\x80\x98proj4\xe2\x80\x99 ...\n** package \xe2\x80\x98proj4\xe2\x80\x99 successfully unpacked and MD5 sums checked\n** using staged installation\nchecking for gcc... clang\nchecking whether the C compiler works... yes\nchecking for C compiler default output file name... a.out\nchecking for suffix of executables... \nchecking whether we are cross compiling... no\nchecking for suffix of object files... …
Run Code Online (Sandbox Code Playgroud)

r proj r-package

7
推荐指数
2
解决办法
7214
查看次数

将纬度/经度转换为Alberta 10 TM Projection

我需要在Alberta 10 TM Projection中将纬度/经度坐标转换为Easting/Northing坐标.

10 TM投影类似于UTM,但它是加拿大阿尔伯塔省的定制投影.我认为(付出一些努力)我可以自己编码,但如果已经完成,我宁愿不重新发明轮子.

gis latitude-longitude proj proj4js

6
推荐指数
1
解决办法
1万
查看次数

如何在 R 中使用 Mollweide 投影和 sf/rnaturalearth/ggplot 来旋转世界地图?

我想使用以太平洋地区(特别是澳大利亚)为中心的 Mollweide 投影,使用 rnaturalearth--> sf-->ggplot管道在 R 中绘制世界地图。

我遇到了一个恼人的问题,即在全球范围内连接线路。

从新的 R 会话中,我运行

library(tidyverse)
library(rnaturalearth)
library(rnaturalearthdata)
library(sf)

target_crs <- st_crs("+proj=moll +x_0=0 +y_0=0 +lat_0=0 +lon_0=133")
worldrn <- ne_countries(scale = "medium", returnclass = "sf") %>%
  sf::st_transform(crs = target_crs)
ggplot(data = worldrn, aes(group = admin)) +
  geom_sf()
Run Code Online (Sandbox Code Playgroud)

生成这个图

在此输入图像描述

这是我的sessionInfo()

R version 4.1.0 (2021-05-18)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.7

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib

locale:
[1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils …
Run Code Online (Sandbox Code Playgroud)

r proj ggplot2 rgdal r-sf

6
推荐指数
1
解决办法
1394
查看次数

标签 统计

proj ×10

map-projections ×4

proj4js ×4

r ×4

gis ×3

ggplot2 ×2

java ×2

cartopy ×1

geos ×1

latitude-longitude ×1

leaflet ×1

netcdf ×1

pip ×1

python ×1

r-package ×1

r-sf ×1

rgdal ×1

tmap ×1

wgs84 ×1