Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

about projection #605

Open
wzhengui opened this issue Aug 19, 2024 · 4 comments
Open

about projection #605

wzhengui opened this issue Aug 19, 2024 · 4 comments

Comments

@wzhengui
Copy link

Hi Basemap developer:

I am wondering whether you can help support the projection of "NAD83 / UTM zone", which is heavily used for the USA community.

Thanks
Zhengui

@DWesl
Copy link
Contributor

DWesl commented Sep 13, 2024

NAD83 is more an ellipsoid description than a projection, and from the below, basemap probably supports it:

ellps string describing ellipsoid ('GRS80' or 'WGS84',
for example). If both rsphere and ellps are given,
rsphere is ignored. Default None. See pyproj.pj_ellps
for allowed values.

UTM zone is a collection of specialized Transverse Mercator projections, as noted in the UTM example:

# mimic this with Basemap (WGS84 ellipsoid, with scaling factor of 0.9996 at
# central meridian). latitude bounds are given for the MGRS band N, which covers Florida.
m = Basemap(projection='tmerc',lon_0=lon_0,lat_0=lat_0,
k_0=0.9996,rsphere=(6378137.00,6356752.314245179),
llcrnrlon=lon_0-3,llcrnrlat=24,urcrnrlon=lon_0+3.,urcrnrlat=32,resolution='i')

so this should be a matter of adding a lookup table to turn UTM zone into Transverse Mercator parameters (or perhaps UTM is designed such that this can be a helper function with multiplication rather than a lookup table).

Since it sounds like you have experience with UTM, perhaps you would be willing to expand that example to include a function to turn UTM zone into lon_0?

@wzhengui
Copy link
Author

Thank you for the response. Yes, I think the modification might be more of adding a lookup table. However, I don't know how to do it. For the UTM example about converting UTM coordinates to lonlat, adding the following two lines should do the trick. Since this is a simple change, I didn't bother to submit a pull request. But if you you want me to do it, I can.

ly,lx=pyproj.Transformer.from_crs('epsg:26917','epsg:4326').transform(x,y)
print('convert from utm to lon&lat from pyproj: ',lx,ly)

@DWesl
Copy link
Contributor

DWesl commented Sep 17, 2024

If there's a simple correspondence between UTM zone and EPSG code/number, the projection coordinates (0, 0) might be on the lon_0, lat_0 basemap needs, do you know if that's the case?

@wzhengui
Copy link
Author

1). I can confirm that there is EPSG number associated with UTM zone projection (see below).

2). No, I don't have an idea what basemap needs.

EPSG:26903 - NAD83 / UTM zone 3N
EPSG:26904 - NAD83 / UTM zone 4N
EPSG:26905 - NAD83 / UTM zone 5N
EPSG:26906 - NAD83 / UTM zone 6N
EPSG:26907 - NAD83 / UTM zone 7N
EPSG:26908 - NAD83 / UTM zone 8N
EPSG:26909 - NAD83 / UTM zone 9N
EPSG:26910 - NAD83 / UTM zone 10N
EPSG:26911 - NAD83 / UTM zone 11N
EPSG:26912 - NAD83 / UTM zone 12N
EPSG:26913 - NAD83 / UTM zone 13N
EPSG:26914 - NAD83 / UTM zone 14N
EPSG:26915 - NAD83 / UTM zone 15N
EPSG:26916 - NAD83 / UTM zone 16N
EPSG:26917 - NAD83 / UTM zone 17N
EPSG:26918 - NAD83 / UTM zone 18N
EPSG:26919 - NAD83 / UTM zone 19N
EPSG:26920 - NAD83 / UTM zone 20N
EPSG:26921 - NAD83 / UTM zone 21N
EPSG:26922 - NAD83 / UTM zone 22N
EPSG:26923 - NAD83 / UTM zone 23N
EPSG:26929 - NAD83 / Alabama East
EPSG:26930 - NAD83 / Alabama West
EPSG:26932 - NAD83 / Alaska zone 2
EPSG:26933 - NAD83 / Alaska zone 3
EPSG:26934 - NAD83 / Alaska zone 4
EPSG:26935 - NAD83 / Alaska zone 5
EPSG:26936 - NAD83 / Alaska zone 6
EPSG:26937 - NAD83 / Alaska zone 7
EPSG:26938 - NAD83 / Alaska zone 8
EPSG:26939 - NAD83 / Alaska zone 9
EPSG:26940 - NAD83 / Alaska zone 10
EPSG:26941 - NAD83 / California zone 1
EPSG:26942 - NAD83 / California zone 2
EPSG:26943 - NAD83 / California zone 3
EPSG:26944 - NAD83 / California zone 4
EPSG:26945 - NAD83 / California zone 5
EPSG:26946 - NAD83 / California zone 6
EPSG:26948 - NAD83 / Arizona East
EPSG:26949 - NAD83 / Arizona Central
EPSG:26950 - NAD83 / Arizona West
EPSG:26951 - NAD83 / Arkansas North
EPSG:26952 - NAD83 / Arkansas South
EPSG:26953 - NAD83 / Colorado North
EPSG:26954 - NAD83 / Colorado Central
EPSG:26955 - NAD83 / Colorado South
EPSG:26956 - NAD83 / Connecticut
EPSG:26957 - NAD83 / Delaware
EPSG:26958 - NAD83 / Florida East
EPSG:26959 - NAD83 / Florida West
EPSG:26960 - NAD83 / Florida North
EPSG:26961 - NAD83 / Hawaii zone 1
EPSG:26962 - NAD83 / Hawaii zone 2
EPSG:26963 - NAD83 / Hawaii zone 3
EPSG:26964 - NAD83 / Hawaii zone 4
EPSG:26965 - NAD83 / Hawaii zone 5
EPSG:26966 - NAD83 / Georgia East
EPSG:26967 - NAD83 / Georgia West
EPSG:26968 - NAD83 / Idaho East
EPSG:26969 - NAD83 / Idaho Central
EPSG:26970 - NAD83 / Idaho West
EPSG:26971 - NAD83 / Illinois East
EPSG:26972 - NAD83 / Illinois West
EPSG:26973 - NAD83 / Indiana East
EPSG:26974 - NAD83 / Indiana West
EPSG:26975 - NAD83 / Iowa North
EPSG:26976 - NAD83 / Iowa South
EPSG:26977 - NAD83 / Kansas North
EPSG:26978 - NAD83 / Kansas South
EPSG:26979 - NAD83 / Kentucky North
EPSG:26980 - NAD83 / Kentucky South
EPSG:26981 - NAD83 / Louisiana North
EPSG:26982 - NAD83 / Louisiana South
EPSG:26983 - NAD83 / Maine East
EPSG:26984 - NAD83 / Maine West
EPSG:26985 - NAD83 / Maryland
EPSG:26986 - NAD83 / Massachusetts Mainland
EPSG:26987 - NAD83 / Massachusetts Island
EPSG:26988 - NAD83 / Michigan North
EPSG:26989 - NAD83 / Michigan Central
EPSG:26990 - NAD83 / Michigan South
EPSG:26991 - NAD83 / Minnesota North
EPSG:26992 - NAD83 / Minnesota Central
EPSG:26993 - NAD83 / Minnesota South
EPSG:26994 - NAD83 / Mississippi East
EPSG:26995 - NAD83 / Mississippi West
EPSG:26996 - NAD83 / Missouri East
EPSG:26997 - NAD83 / Missouri Central
EPSG:26998 - NAD83 / Missouri West

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants