我正在尝试通过GDAL将netCDF文件转换为EPSG:3857,以便与Mapbox一起使用。这将是.nc到.nc的转换。不光栅。我愿意使用GDAL或其他方法来执行此操作。必须将这些数据重新投影到控制台应用程序之前-这个过程要花几周时间才能找到解决方案-我认为这很简单。
我正在为卫星数据着色。有3个.nc文件(蓝色,红色和红外)经过组合和处理后可以创建彩色图像。从Amazon AWS下载3个文件后,一个python控制台应用程序进行处理并将.jpg转储到同一文件夹。该应用程序的源代码位于此处,因此您可以验证数据。(因为文件是超高分辨率,所以速度很慢)。
我试过的代码是:
gdalwarp -t_srs EPSG:3857 test.nc test-projected.nc
Run Code Online (Sandbox Code Playgroud)
但是,还尝试了其他几种变体,但没有任何效果。
我不是专业人士,但我是否应该使用gdalwarp来做到这一点?我只想更改投影-别无其他,因此python应用仍然可以处理数据。它必须能够使用重新投影的文件来创建.jpg。
以下链接是需要转换的数据的样本:
AWS> .Color Channel 2上的.nc文件(红色,更高0.5km分辨率和更大的文件大小)
另外,其他在线用户已经通过pyproj模块(位于https://github.com/blaylockbk/pyBKB_v2/tree/master/BB_GOES16)使用类似的投影来完成此操作。(与Mapbox一起使用时,我的必须为EPSG:3857)。如果将python代码修改为一次性完成所有操作,那也将很棒。我将悬赏作为最后的希望。

我不了解python,因此我一直在尝试GDAL,但是添加到我的源代码中以达到预期结果的工作python代码(或有效的GDAL脚本)将获得丰厚的回报。
我有 GeoJSON
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [
[[13.65374516425911, 52.38533382814119], [13.65239769133293, 52.38675829106993], [13.64970274383571, 52.38675829106993], [13.64835527090953, 52.38533382814119], [13.64970274383571, 52.38390931824483], [13.65239769133293, 52.38390931824483], [13.65374516425911, 52.38533382814119]]
]
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想用 Python 计算它的面积 (87106.33m^2)。我怎么做?
# core modules
from functools import partial
# 3rd pary modules
from shapely.geometry import Polygon
from shapely.ops import transform
import pyproj
l = [[13.65374516425911, 52.38533382814119, 0.0], [13.65239769133293, 52.38675829106993, 0.0], [13.64970274383571, 52.38675829106993, 0.0], [13.64835527090953, 52.38533382814119, 0.0], …Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以从中心坐标中提取坐标网格(紫色点),例如每个坐标之间的距离为 100 米?
例如输入纬度和经度中心坐标(红点):
lat = 40.8264859
lon = -3.6805897
Run Code Online (Sandbox Code Playgroud)
在一个函数中,该函数返回一个列表或数组的列表,其中包含相应的纬度、经度网格,彼此相距 100 米,以及距中心点的最大坐标数(在此图像情况下,该值将为2)。例如:
def get_grid_of_coordinates_from_center(lat, lon, meters_between_coor, coors_away_from_center):
...
return list_of_lists
Run Code Online (Sandbox Code Playgroud) 假设我GeoDataFrame有一套CRS。
gdf.crs
Run Code Online (Sandbox Code Playgroud)
给我
<Projected CRS: EPSG:25833>
Name: ETRS89 / UTM zone 33N
Axis Info [cartesian]:
- [east]: Easting (metre)
- [north]: Northing (metre)
Area of Use:
- undefined
Coordinate Operation:
- name: UTM zone 33N
- method: Transverse Mercator
Datum: European Terrestrial Reference System 1989
- Ellipsoid: GRS 1980
- Prime Meridian: Greenwich
Run Code Online (Sandbox Code Playgroud)
这是类型<class 'pyproj.crs.crs.CRS'>。EPSG Code有没有办法从中提取25833?
如何使用 Python 将大地测量(纬度、经度、高度)坐标转换为本地切线平面 ENU(东、北、上)坐标?
pyproj 包似乎没有正确的功能......
coordinate-systems coordinate-transformation python-2.7 pyproj
我的代码在 .py 时运行良好,但是当我使用 pyinstaller 创建 .exe 文件时,它显示 ModuleNotFoundError。
我在制作 .exe 时写了这个
pyinstaller -F MyCode.py
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
我读了
我打算尝试在 Pyinstaller 的“hooks”文件夹中创建并定位 hook-pyproj.py。但是 hook-pyproj.py 已经存在,并且具有相同的代码。
之后,我安装了“底图”并尝试从中使用 pyproj。但是它向我显示了同样的错误。
这是我执行 .exe 文件时显示的错误。(我用*****覆盖了一些信息)
Traceback (most recent call last):
File "collect\MyCode.py", line 8, in <module>
File "c:\users\*****\appdata\local\programs\python\python36-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\mpl_toolkits\basemap\__init__.py", line 41, in <module>
File "c:\users\*****\appdata\local\programs\python\python36-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\pyproj\__init__.py", line 62, in <module>
File "c:\users\*****\appdata\local\programs\python\python36-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\pyproj\crs.py", …Run Code Online (Sandbox Code Playgroud) 给定一个(lon,lat)点(5.068913,52.067567)我想使用pyproj.
两者中的Proj, 和transform函数pyproj似乎都适合这样的任务:
当我使用该Proj函数时,我得到的结果与使用 不同transform,为什么?
例如
from shapely.geometry import Point
from pyproj import Proj, transform
from matplotlib import pyplot as plt
x1, y1 = 5.068913, 52.067567
in_proj = Proj(init='epsg:4326')
out_proj = Proj(init='epsg:28992')
point1 = Point(out_proj(x1, y1))
point2 = Point(transform(in_proj, out_proj, x1 ,y1))
print(point1 == point2)
fig, ax = plt.subplots()
x, y = point1.xy
ax.plot(x, y, 'ro')
x, y = point2.xy
ax.plot(x, y, 'ro')
Run Code Online (Sandbox Code Playgroud)
安装后pyproj,geopandas导入后者时出现错误:
!conda install --offline -c conda-forge geopandas-0.7.0-py_1.tar.bz2
!conda install --offline -c conda-forge pyproj-2.6.0-py38hff69d4a_0.tar.bz2
import geopandas
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-8-f30f80f43dee> in <module>()
1 # from pyproj import _datadir, datadir
----> 2 import geopandas
~\AppData\Local\Continuum\anaconda3\lib\site-packages\geopandas\__init__.py in <module>()
----> 1 from geopandas.geoseries import GeoSeries # noqa
2 from geopandas.geodataframe import GeoDataFrame # noqa
3 from geopandas.array import _points_from_xy as points_from_xy # noqa
4
5 from geopandas.io.file import read_file # noqa
~\AppData\Local\Continuum\anaconda3\lib\site-packages\geopandas\geoseries.py in <module>()
7 from …Run Code Online (Sandbox Code Playgroud) 我想用PyProj. 我按照文档中给出的安装说明进行操作
conda config --prepend channels conda-forge
conda config --set channel_priority strict
conda install pyproj
Run Code Online (Sandbox Code Playgroud)
当我跑步时
from pyproj import CRS
Run Code Online (Sandbox Code Playgroud)
我正进入(状态
C:\Users...\Miniconda3\envs\geopandas\lib\site-packages\pyproj_ init _.py:89: UserWarning: pyproj 无法设置数据库路径。_pyproj_global_context_initialize()
关于Python和我的系统的一些信息
Python 版本 -> 3.9.7 | 由 conda-forge 打包 | (默认,2021 年 9 月 29 日,19:15:42)[MSC v.1916 64 位 (AMD64)]
操作系统信息 -> Windows-10-10.0.19042-SP0
pyproj ×10
python ×8
anaconda ×2
gis ×2
data-science ×1
gdal ×1
geojson ×1
geopandas ×1
geospatial ×1
importerror ×1
miniconda ×1
numpy ×1
osmnx ×1
pyinstaller ×1
python-2.7 ×1
python-3.6 ×1
python-3.x ×1
shapely ×1