Codebase list python-pyproj / 5940255a-7440-4155-a052-d6edf54016f5/main
New upstream snapshot. Debian Janitor 2 years ago
64 changed file(s) with 923 addition(s) and 2083 deletion(s). Raw diff Collapse all Expand all
+0
-448
.all-contributorsrc less more
0 {
1 "projectName": "pyproj",
2 "projectOwner": "pyproj4",
3 "repoType": "github",
4 "repoHost": "https://github.com",
5 "files": [
6 "README.md"
7 ],
8 "imageSize": 100,
9 "commit": true,
10 "commitConvention": "none",
11 "contributors": [
12 {
13 "login": "jswhit",
14 "name": "Jeff Whitaker",
15 "avatar_url": "https://avatars2.githubusercontent.com/u/579593?v=4",
16 "profile": "https://github.com/jswhit",
17 "contributions": [
18 "doc",
19 "test",
20 "code",
21 "example",
22 "ideas",
23 "review",
24 "question",
25 "maintenance",
26 "infra",
27 "bug"
28 ]
29 },
30 {
31 "login": "snowman2",
32 "name": "Alan D. Snow",
33 "avatar_url": "https://avatars3.githubusercontent.com/u/8699967?v=4",
34 "profile": "https://github.com/snowman2",
35 "contributions": [
36 "doc",
37 "test",
38 "code",
39 "example",
40 "maintenance",
41 "infra",
42 "ideas",
43 "review",
44 "question",
45 "bug"
46 ]
47 },
48 {
49 "login": "micahcochran",
50 "name": "Micah Cochran",
51 "avatar_url": "https://avatars0.githubusercontent.com/u/7433104?v=4",
52 "profile": "https://github.com/micahcochran",
53 "contributions": [
54 "doc",
55 "test",
56 "code",
57 "maintenance",
58 "infra",
59 "review",
60 "question",
61 "bug"
62 ]
63 },
64 {
65 "login": "jorisvandenbossche",
66 "name": "Joris Van den Bossche",
67 "avatar_url": "https://avatars2.githubusercontent.com/u/1020496?v=4",
68 "profile": "https://jorisvandenbossche.github.io/",
69 "contributions": [
70 "doc",
71 "code",
72 "ideas",
73 "review",
74 "question",
75 "bug",
76 "test"
77 ]
78 },
79 {
80 "login": "cjmayo",
81 "name": "Chris Mayo",
82 "avatar_url": "https://avatars1.githubusercontent.com/u/921089?v=4",
83 "profile": "https://github.com/cjmayo",
84 "contributions": [
85 "test"
86 ]
87 },
88 {
89 "login": "cffk",
90 "name": "Charles Karney",
91 "avatar_url": "https://avatars1.githubusercontent.com/u/2298266?v=4",
92 "profile": "https://www.petrel.org",
93 "contributions": [
94 "code",
95 "test"
96 ]
97 },
98 {
99 "login": "zippy1981",
100 "name": "Justin Dearing",
101 "avatar_url": "https://avatars3.githubusercontent.com/u/146930?v=4",
102 "profile": "http://www.justaprogrammer.net/profile/justin",
103 "contributions": [
104 "infra"
105 ]
106 },
107 {
108 "login": "jdkloe",
109 "name": "Jos de Kloe",
110 "avatar_url": "https://avatars3.githubusercontent.com/u/1906112?v=4",
111 "profile": "https://github.com/jdkloe",
112 "contributions": [
113 "code",
114 "test",
115 "bug"
116 ]
117 },
118 {
119 "login": "georgeouzou",
120 "name": "George Ouzounoudis",
121 "avatar_url": "https://avatars3.githubusercontent.com/u/16732042?v=4",
122 "profile": "https://github.com/georgeouzou",
123 "contributions": [
124 "code",
125 "ideas"
126 ]
127 },
128 {
129 "login": "djhoese",
130 "name": "David Hoese",
131 "avatar_url": "https://avatars3.githubusercontent.com/u/1828519?v=4",
132 "profile": "https://github.com/djhoese",
133 "contributions": [
134 "review",
135 "ideas",
136 "platform",
137 "doc",
138 "test",
139 "code"
140 ]
141 },
142 {
143 "login": "mitkin",
144 "name": "Mikhail Itkin",
145 "avatar_url": "https://avatars3.githubusercontent.com/u/3927849?v=4",
146 "profile": "http://mitkin.github.io",
147 "contributions": [
148 "code"
149 ]
150 },
151 {
152 "login": "dopplershift",
153 "name": "Ryan May",
154 "avatar_url": "https://avatars2.githubusercontent.com/u/221526?v=4",
155 "profile": "http://dopplershift.github.io",
156 "contributions": [
157 "code"
158 ]
159 },
160 {
161 "login": "artttt",
162 "name": "artttt",
163 "avatar_url": "https://avatars3.githubusercontent.com/u/4626281?v=4",
164 "profile": "https://github.com/artttt",
165 "contributions": [
166 "ideas"
167 ]
168 },
169 {
170 "login": "ocefpaf",
171 "name": "Filipe",
172 "avatar_url": "https://avatars1.githubusercontent.com/u/950575?v=4",
173 "profile": "http://ocefpaf.github.io/python4oceanographers",
174 "contributions": [
175 "infra",
176 "code",
177 "platform"
178 ]
179 },
180 {
181 "login": "heitorPB",
182 "name": "Heitor",
183 "avatar_url": "https://avatars2.githubusercontent.com/u/13461702?v=4",
184 "profile": "https://github.com/heitorPB",
185 "contributions": [
186 "doc"
187 ]
188 },
189 {
190 "login": "sebastic",
191 "name": "Bas Couwenberg",
192 "avatar_url": "https://avatars3.githubusercontent.com/u/4605306?v=4",
193 "profile": "https://github.com/sebastic",
194 "contributions": [
195 "code",
196 "platform",
197 "test"
198 ]
199 },
200 {
201 "login": "nickeubank",
202 "name": "Nick Eubank",
203 "avatar_url": "https://avatars0.githubusercontent.com/u/9683693?v=4",
204 "profile": "https://github.com/nickeubank",
205 "contributions": [
206 "code"
207 ]
208 },
209 {
210 "login": "mdunphy",
211 "name": "Michael Dunphy",
212 "avatar_url": "https://avatars3.githubusercontent.com/u/9088426?v=4",
213 "profile": "https://www.math.uwaterloo.ca/~mdunphy/",
214 "contributions": [
215 "doc"
216 ]
217 },
218 {
219 "login": "matthew-brett",
220 "name": "Matthew Brett",
221 "avatar_url": "https://avatars2.githubusercontent.com/u/67612?v=4",
222 "profile": "http://matthew.dynevor.org",
223 "contributions": [
224 "infra",
225 "platform"
226 ]
227 },
228 {
229 "login": "jdemaeyer",
230 "name": "Jakob de Maeyer ",
231 "avatar_url": "https://avatars1.githubusercontent.com/u/10531844?v=4",
232 "profile": "https://naboa.de",
233 "contributions": [
234 "code"
235 ]
236 },
237 {
238 "login": "gitter-badger",
239 "name": "The Gitter Badger",
240 "avatar_url": "https://avatars2.githubusercontent.com/u/8518239?v=4",
241 "profile": "https://gitter.im",
242 "contributions": [
243 "doc"
244 ]
245 },
246 {
247 "login": "bmwiedemann",
248 "name": "Bernhard M. Wiedemann",
249 "avatar_url": "https://avatars3.githubusercontent.com/u/637990?v=4",
250 "profile": "http://lizards.opensuse.org/author/bmwiedemann/",
251 "contributions": [
252 "code"
253 ]
254 },
255 {
256 "login": "ReallyNiceGuy",
257 "name": "Marco Aurélio da Costa",
258 "avatar_url": "https://avatars0.githubusercontent.com/u/6545730?v=4",
259 "profile": "https://github.com/ReallyNiceGuy",
260 "contributions": [
261 "code"
262 ]
263 },
264 {
265 "login": "ChrisBarker-NOAA",
266 "name": "Christopher H. Barker",
267 "avatar_url": "https://avatars2.githubusercontent.com/u/916576?v=4",
268 "profile": "https://github.com/ChrisBarker-NOAA",
269 "contributions": [
270 "code"
271 ]
272 },
273 {
274 "login": "kbevers",
275 "name": "Kristian Evers",
276 "avatar_url": "https://avatars3.githubusercontent.com/u/13132571?v=4",
277 "profile": "https://evers.dev/",
278 "contributions": [
279 "question",
280 "ideas",
281 "doc"
282 ]
283 },
284 {
285 "login": "rouault",
286 "name": "Even Rouault",
287 "avatar_url": "https://avatars2.githubusercontent.com/u/1192433?v=4",
288 "profile": "http://www.spatialys.com/en/about/",
289 "contributions": [
290 "question"
291 ]
292 },
293 {
294 "login": "cgohlke",
295 "name": "Christoph Gohlke",
296 "avatar_url": "https://avatars3.githubusercontent.com/u/483428?v=4",
297 "profile": "https://github.com/cgohlke",
298 "contributions": [
299 "platform",
300 "question",
301 "bug",
302 "test"
303 ]
304 },
305 {
306 "login": "chrrrisw",
307 "name": "Chris Willoughby",
308 "avatar_url": "https://avatars0.githubusercontent.com/u/5555320?v=4",
309 "profile": "https://github.com/chrrrisw",
310 "contributions": [
311 "code"
312 ]
313 },
314 {
315 "login": "glostis",
316 "name": "Guillaume Lostis",
317 "avatar_url": "https://avatars0.githubusercontent.com/u/25295717?v=4",
318 "profile": "https://github.com/glostis",
319 "contributions": [
320 "doc"
321 ]
322 },
323 {
324 "login": "edpop",
325 "name": "Eduard Popov",
326 "avatar_url": "https://avatars3.githubusercontent.com/u/13479292?v=4",
327 "profile": "https://github.com/edpop",
328 "contributions": [
329 "doc"
330 ]
331 },
332 {
333 "login": "jranalli",
334 "name": "Joe Ranalli",
335 "avatar_url": "https://avatars2.githubusercontent.com/u/7864460?v=4",
336 "profile": "http://www.personal.psu.edu/jar339",
337 "contributions": [
338 "bug",
339 "code",
340 "test"
341 ]
342 },
343 {
344 "login": "gberardinelli",
345 "name": "Greg Berardinelli",
346 "avatar_url": "https://avatars0.githubusercontent.com/u/13799588?v=4",
347 "profile": "https://github.com/gberardinelli",
348 "contributions": [
349 "bug",
350 "code",
351 "ideas",
352 "test"
353 ]
354 },
355 {
356 "login": "mraspaud",
357 "name": "Martin Raspaud",
358 "avatar_url": "https://avatars1.githubusercontent.com/u/167802?v=4",
359 "profile": "https://github.com/mraspaud",
360 "contributions": [
361 "bug",
362 "code",
363 "test",
364 "ideas"
365 ]
366 },
367 {
368 "login": "mwtoews",
369 "name": "Mike Taves",
370 "avatar_url": "https://avatars1.githubusercontent.com/u/895458?v=4",
371 "profile": "https://sites.google.com/site/mwtoews/",
372 "contributions": [
373 "test"
374 ]
375 },
376 {
377 "login": "habi",
378 "name": "David Haberthür",
379 "avatar_url": "https://avatars2.githubusercontent.com/u/1651235?v=4",
380 "profile": "http://davidhaberthür.ch",
381 "contributions": [
382 "doc"
383 ]
384 },
385 {
386 "login": "mmodenesi",
387 "name": "mmodenesi",
388 "avatar_url": "https://avatars2.githubusercontent.com/u/5569789?v=4",
389 "profile": "https://github.com/mmodenesi",
390 "contributions": [
391 "bug",
392 "code",
393 "test"
394 ]
395 },
396 {
397 "login": "jacob-indigo",
398 "name": "jacob-indigo",
399 "avatar_url": "https://avatars0.githubusercontent.com/u/48448372?v=4",
400 "profile": "https://www.indigoag.com/",
401 "contributions": [
402 "bug",
403 "code"
404 ]
405 },
406 {
407 "login": "rahulporuri",
408 "name": "Poruri Sai Rahul",
409 "avatar_url": "https://avatars0.githubusercontent.com/u/1926457?v=4",
410 "profile": "https://rahulporuri.github.io",
411 "contributions": [
412 "test"
413 ]
414 },
415 {
416 "login": "underchemist",
417 "name": "Yann-Sebastien Tremblay-Johnston",
418 "avatar_url": "https://avatars1.githubusercontent.com/u/5283998?v=4",
419 "profile": "https://medium.com/@underchemist",
420 "contributions": [
421 "doc"
422 ]
423 },
424 {
425 "login": "odidev",
426 "name": "odidev",
427 "avatar_url": "https://avatars2.githubusercontent.com/u/40816837?v=4",
428 "profile": "https://github.com/odidev",
429 "contributions": [
430 "platform"
431 ]
432 },
433 {
434 "login": "idanmiara",
435 "name": "Idan Miara",
436 "avatar_url": "https://avatars.githubusercontent.com/u/26349741?v=4",
437 "profile": "https://github.com/idanmiara",
438 "contributions": [
439 "code",
440 "doc",
441 "example",
442 "test"
443 ]
444 }
445 ],
446 "contributorsPerLine": 7
447 }
+0
-6
.coveragerc less more
0 [run]
1 plugins = Cython.Coverage
2
3 [report]
4 # number of decimal points to report for coverage percentage
5 precision = 2
+0
-63
.github/ISSUE_TEMPLATE/bug_report.md less more
0 ---
1 name: Bug report
2 about: Create a report to help us improve
3 labels: bug
4 ---
5
6 <!-- Please search existing issues to avoid creating duplicates. -->
7
8
9 #### Code Sample, a copy-pastable example if possible
10
11 A "Minimal, Complete and Verifiable Example" will make it much easier for maintainers to help you:
12 http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports
13
14 ```python
15 # Your code here
16 ```
17 #### Problem description
18
19 [this should explain **why** the current behavior is a problem and why the expected output is a better solution.]
20
21 #### Expected Output
22
23
24 #### Environment Information
25 <!-- If you have pyproj 3+ -->
26 - Output from: `pyproj -v`
27 <!-- If you have pyproj>=2.4.0 -->
28 - Output from: `python -m pyproj -v`
29 <!-- If you have pyproj>=2.2.1 -->
30 - Output from: `python -c "import pyproj; pyproj.show_versions()"`
31 <!-- If you have pyproj<2.2.1 -->
32 - pyproj version (`python -c "import pyproj; print(pyproj.__version__)"`)
33 - PROJ version (`python -c "import pyproj; print(pyproj.proj_version_str)"`)
34 - PROJ data directory (`python -c "import pyproj; print(pyproj.datadir.get_data_dir())"`)
35 - Python version (`python -c "import sys; print(sys.version.replace('\n', ' '))"`)
36 - Operation System Information (`python -c "import platform; print(platform.platform())"`)
37
38
39 #### Installation method
40 - conda, pip wheel, from source, etc...
41
42 #### Conda environment information (if you installed with conda):
43
44 <br/>
45 Environment (<code>conda list</code>):
46 <details>
47
48 ```
49 $ conda list proj
50
51 ```
52 </details>
53
54 <br/>
55 Details about <code>conda</code> and system ( <code>conda info</code> ):
56 <details>
57
58 ```
59 $ conda info
60
61 ```
62 </details>
+0
-7
.github/ISSUE_TEMPLATE/config.yml less more
0 contact_links:
1 - name: Ask questions
2 url: https://github.com/pyproj4/pyproj/discussions
3 about: Please ask and answer questions here.
4 - name: Ask questions from the GIS community
5 url: https://gis.stackexchange.com/questions/tagged/pyproj
6 about: To get answers from questions in the GIS commminuty, please ask and answer questions here with the pyproj tag.
+0
-9
.github/ISSUE_TEMPLATE/feature_request.md less more
0 ---
1 name: Feature request
2 about: Suggest an idea for this project
3 labels: proposal
4 ---
5
6 <!-- Please search existing issues to avoid creating duplicates. -->
7
8 <!-- Describe the feature you'd like. -->
+0
-18
.github/ISSUE_TEMPLATE/installation_issues.md less more
0 ---
1 name: Installation issues
2 about: Issues installing pyproj (http://pyproj4.github.io/pyproj/stable/installation.html)
3 labels: installation-issues
4 ---
5
6 <!-- Please search existing issues to avoid creating duplicates. -->
7
8 #### Installation method/steps
9 - Installation method (conda, pip wheel, from source, etc...)
10 - How did you install PROJ? Where is it installed?
11 - Please provide all commands/steps you used to install pyproj and PROJ.
12
13 #### Environment Information
14 - pyproj version you are attempting to install
15 - PROJ version (Execute `proj` command and give version here.)
16 - Python version (`python -c "import sys; print(sys.version.replace('\n', ' '))"`)
17 - Operation System Information (`python -c "import platform; print(platform.platform())"`)
+0
-5
.github/PULL_REQUEST_TEMPLATE.md less more
0 <!-- Feel free to remove check-list items aren't relevant to your change -->
1
2 - [ ] Closes #xxxx
3 - [ ] Tests added
4 - [ ] Fully documented, including `history.rst` for all changes and `api/*.rst` for new API
+0
-53
.github/workflows/build_docs.yaml less more
0 name: Publish Docs
1
2 on:
3 push:
4 branches: [ master ]
5 release:
6 types: [ created ]
7
8 jobs:
9 docs:
10 name: Publish Docs
11 runs-on: ubuntu-latest
12
13 steps:
14 - uses: actions/checkout@v2
15 with:
16 persist-credentials: false
17
18 - name: Setup Conda
19 uses: s-weigand/setup-conda@v1
20 with:
21 activate-conda: false
22 python-version: 3.8
23 conda-channels: conda-forge
24
25 - name: Install and Build
26 shell: bash
27 run: |
28 conda create -n docs python=3.8 cython proj
29 source activate docs
30 python -m pip install -e . --no-use-pep517 || python -m pip install -e .
31 python -m pip install -r requirements-docs.txt
32 sphinx-build -b html docs/ docs/_build/
33
34 - name: Deploy 🚀
35 uses: JamesIves/github-pages-deploy-action@3.7.1
36 if: ${{ github.event_name == 'release' }}
37 with:
38 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39 BRANCH: gh-pages
40 FOLDER: docs/_build/
41 CLEAN: false
42 TARGET_FOLDER: ${{ github.ref }}
43
44 - name: Deploy 🚀
45 uses: JamesIves/github-pages-deploy-action@3.7.1
46 if: ${{ github.event_name == 'push' }}
47 with:
48 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
49 BRANCH: gh-pages
50 FOLDER: docs/_build/
51 CLEAN: false
52 TARGET_FOLDER: latest
+0
-61
.github/workflows/test_proj_latest.yaml less more
0 name: Test PROJ Latest
1
2 on:
3 push:
4 branches: [ master ]
5 schedule:
6 - cron: '0 0 * * 0'
7
8 jobs:
9 test_proj_latest:
10 name: PROJ Latest
11 runs-on: ubuntu-latest
12 env:
13 PYPROJ_FULL_COVERAGE: YES
14 PROJ_DIR: ${{ github.workspace }}/proj_install
15 PROJ_LIB: ${{ github.workspace }}/proj_install/share/proj
16 steps:
17 - uses: actions/checkout@v2
18 - uses: actions/setup-python@v2
19 with:
20 python-version: 3.7
21 - name: Install PROJ
22 shell: bash
23 run: |
24 sudo apt-get update
25 sudo apt-get install -qq sqlite3 libsqlite3-dev libtiff-dev libcurl4-openssl-dev
26 bash ci/proj-compile.sh git
27
28 - name: Install and Log Environment
29 shell: bash
30 run: |
31 python -V
32 python -m pip install cython
33 python -m pip install -e . --no-use-pep517 || python -m pip install -e .
34 python -m pip install -r requirements-test.txt
35 pyproj -v
36
37 - name: Test
38 shell: bash
39 run: |
40 py.test --cov-report term-missing --cov=pyproj --cov-report xml
41
42 - name: Test Network
43 shell: bash
44 env:
45 PROJ_NETWORK: ON
46 run: |
47 py.test
48
49 - name: Test Global Context
50 shell: bash
51 env:
52 PYPROJ_GLOBAL_CONTEXT: ON
53 run: |
54 py.test
55
56 - name: Test Grids
57 shell: bash
58 run: |
59 $PROJ_DIR/bin/projsync --quiet --bbox -175,0,-50,85
60 py.test
+0
-105
.github/workflows/tests.yaml less more
0 name: Tests
1
2 on:
3 push:
4 branches: [ master ]
5 pull_request:
6 branches: [ master ]
7 schedule:
8 - cron: '0 0 * * 0'
9
10 jobs:
11 linting:
12 runs-on: ubuntu-latest
13 steps:
14 - uses: actions/checkout@v2
15 - uses: actions/setup-python@v2
16 - uses: pre-commit/action@v2.0.0
17 - name: Install mypy
18 run: |
19 python -m pip install mypy
20 - name: mypy
21 run: |
22 mypy pyproj
23
24 test:
25 needs: linting
26 name: ${{ matrix.os }}, ${{ matrix.python-version }}, PROJ=${{ matrix.proj-version }}
27 runs-on: ${{ matrix.os }}
28 strategy:
29 fail-fast: true
30 matrix:
31 os: [ubuntu-latest, macos-latest, windows-latest]
32 python-version: [3.7, 3.8, 3.9]
33 proj-version: ['*']
34 env:
35 - PYPROJ_FULL_COVERAGE: YES
36 include:
37 - os: ubuntu-latest
38 python-version: 3.7
39 proj-version: 7.2
40 steps:
41 - uses: actions/checkout@v2
42
43 - name: Setup Conda
44 uses: s-weigand/setup-conda@v1
45 with:
46 activate-conda: false
47 python-version: ${{ matrix.python-version }}
48 conda-channels: conda-forge
49
50 - name: Install Env
51 shell: bash
52 run: |
53 conda create -n test python=${{ matrix.python-version }} cython proj=${{ matrix.proj-version }} numpy shapely xarray pandas
54 source activate test
55 python -m pip install -e . --no-use-pep517 || python -m pip install -e .
56 python -m pip install -r requirements-test.txt
57
58 - name: Check and Log Environment
59 shell: bash
60 run: |
61 source activate test
62 python -V
63 pyproj -v
64 conda info
65
66 - name: Test
67 shell: bash
68 run: |
69 source activate test
70 py.test --cov-report term-missing --cov=pyproj --cov-report xml
71
72 - name: Test Network
73 shell: bash
74 env:
75 PROJ_NETWORK: ON
76 run: |
77 source activate test
78 py.test
79
80 - name: Test Global Context
81 shell: bash
82 env:
83 PYPROJ_GLOBAL_CONTEXT: ON
84 run: |
85 source activate test
86 py.test
87
88 - name: Test Grids
89 shell: bash
90 run: |
91 source activate test
92 projsync --quiet --bbox -175,0,-50,85
93 py.test
94
95 - name: Test Build docs
96 shell: bash
97 if: contains(matrix.os, 'ubuntu')
98 run: |
99 source activate test
100 python -m pip install -r requirements-docs.txt
101 sphinx-build -b html docs/ docs/_build/
102 sphinx-build -b man docs/ docs/_build/
103
104 - uses: codecov/codecov-action@v1
+0
-119
.gitignore less more
0 pyproj/proj_dir/
1 pyproj/*.c
2 pyproj/*/*.c
3 pyproj/*/*.html
4 pyproj/*.html
5 proj-*/
6
7 # Byte-compiled / optimized / DLL files
8 __pycache__/
9 *.py[cod]
10 *$py.class
11
12 # C extensions
13 *.so
14
15 # Distribution / packaging
16 wheelhouse/
17 .Python
18 env/
19 build/
20 develop-eggs/
21 dist/
22 downloads/
23 eggs/
24 .eggs/
25 lib/
26 lib64/
27 parts/
28 sdist/
29 var/
30 wheels/
31 *.egg-info/
32 .installed.cfg
33 *.egg
34
35 # PyInstaller
36 # Usually these files are written by a python script from a template
37 # before PyInstaller builds the exe, so as to inject date/other infos into it.
38 *.manifest
39 *.spec
40
41 # Installer logs
42 pip-log.txt
43 pip-delete-this-directory.txt
44
45 # Unit test / coverage reports
46 htmlcov/
47 .tox/
48 .coverage
49 .coverage.*
50 .cache
51 nosetests.xml
52 coverage.xml
53 *.cover
54 .hypothesis/
55 .pytest_cache/
56
57 # Translations
58 *.mo
59 *.pot
60
61 # Django stuff:
62 *.log
63 local_settings.py
64
65 # Flask stuff:
66 instance/
67 .webassets-cache
68
69 # Scrapy stuff:
70 .scrapy
71
72 # Sphinx documentation
73 docs/_build/
74
75 # PyBuilder
76 target/
77
78 # Jupyter Notebook
79 .ipynb_checkpoints
80
81 # pyenv
82 .python-version
83
84 # celery beat schedule file
85 celerybeat-schedule
86
87 # SageMath parsed files
88 *.sage.py
89
90 # dotenv
91 .env
92
93 # virtualenv
94 .venv
95 venv/
96 ENV/
97
98 # Spyder project settings
99 .spyderproject
100 .spyproject
101
102 # Rope project settings
103 .ropeproject
104
105 # mkdocs documentation
106 /site
107
108 # mypy
109 .mypy_cache/
110
111 # pycharm
112 .idea/
113
114 # pytest
115 .pytest_cache/
116
117 # vscode
118 .vscode/
+0
-3
.isort.cfg less more
0 [settings]
1 known_first_party=pyproj,test
2 profile=black
+0
-32
.pre-commit-config.yaml less more
0 repos:
1 - repo: https://github.com/pre-commit/pre-commit-hooks
2 rev: v3.2.0
3 hooks:
4 - id: check-yaml
5 - id: end-of-file-fixer
6 - id: trailing-whitespace
7 - repo: https://github.com/psf/black
8 rev: 20.8b1
9 hooks:
10 - id: black
11 - repo: https://github.com/timothycrosley/isort
12 rev: 5.6.1
13 hooks:
14 - id: isort
15 args: [setup.py, pyproj/, test/, docs/]
16 - repo: https://github.com/asottile/blacken-docs
17 rev: v1.8.0
18 hooks:
19 - id: blacken-docs
20 args: [--skip-errors]
21 - repo: https://gitlab.com/pycqa/flake8
22 rev: 3.8.4
23 hooks:
24 - id: flake8
25 additional_dependencies: [flake8-comprehensions>=3.1.0]
26 - id: flake8
27 name: flake8-pyx
28 files: \.(pyx|pxd)$
29 types:
30 - file
31 args: [--append-config=flake8/cython.cfg]
+0
-6
.stickler.yml less more
0 linters:
1 black:
2 config: ./pyproject.toml
3 flake8:
4 python: 3
5 max-line-length: 88
+0
-76
CODE_OF_CONDUCT.md less more
0 # Contributor Covenant Code of Conduct
1
2 ## Our Pledge
3
4 In the interest of fostering an open and welcoming environment, we as
5 contributors and maintainers pledge to making participation in our project and
6 our community a harassment-free experience for everyone, regardless of age, body
7 size, disability, ethnicity, sex characteristics, gender identity and expression,
8 level of experience, education, socio-economic status, nationality, personal
9 appearance, race, religion, or sexual identity and orientation.
10
11 ## Our Standards
12
13 Examples of behavior that contributes to creating a positive environment
14 include:
15
16 * Using welcoming and inclusive language
17 * Being respectful of differing viewpoints and experiences
18 * Gracefully accepting constructive criticism
19 * Focusing on what is best for the community
20 * Showing empathy towards other community members
21
22 Examples of unacceptable behavior by participants include:
23
24 * The use of sexualized language or imagery and unwelcome sexual attention or
25 advances
26 * Trolling, insulting/derogatory comments, and personal or political attacks
27 * Public or private harassment
28 * Publishing others' private information, such as a physical or electronic
29 address, without explicit permission
30 * Other conduct which could reasonably be considered inappropriate in a
31 professional setting
32
33 ## Our Responsibilities
34
35 Project maintainers are responsible for clarifying the standards of acceptable
36 behavior and are expected to take appropriate and fair corrective action in
37 response to any instances of unacceptable behavior.
38
39 Project maintainers have the right and responsibility to remove, edit, or
40 reject comments, commits, code, wiki edits, issues, and other contributions
41 that are not aligned to this Code of Conduct, or to ban temporarily or
42 permanently any contributor for other behaviors that they deem inappropriate,
43 threatening, offensive, or harmful.
44
45 ## Scope
46
47 This Code of Conduct applies both within project spaces and in public spaces
48 when an individual is representing the project or its community. Examples of
49 representing a project or community include using an official project e-mail
50 address, posting via an official social media account, or acting as an appointed
51 representative at an online or offline event. Representation of a project may be
52 further defined and clarified by project maintainers.
53
54 ## Enforcement
55
56 Instances of abusive, harassing, or otherwise unacceptable behavior may be
57 reported by contacting the project team. All
58 complaints will be reviewed and investigated and will result in a response that
59 is deemed necessary and appropriate to the circumstances. The project team is
60 obligated to maintain confidentiality with regard to the reporter of an incident.
61 Further details of specific enforcement policies may be posted separately.
62
63 Project maintainers who do not follow or enforce the Code of Conduct in good
64 faith may face temporary or permanent repercussions as determined by other
65 members of the project's leadership.
66
67 ## Attribution
68
69 This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
70 available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
71
72 [homepage]: https://www.contributor-covenant.org
73
74 For answers to common questions about this code of conduct, see
75 https://www.contributor-covenant.org/faq
+0
-220
CONTRIBUTING.md less more
0 # Contributors Guide
1
2 Based on the guide from: https://github.com/Unidata/MetPy
3
4 Interested in helping build pyproj? Have code from your research that you believe others will find useful? Have a few minutes to tackle an issue? In this guide we will get you setup and integrated into contributing to pyproj!
5
6 ## Introduction
7 First off, thank you for considering contributing to pyproj. pyproj is community-driven
8 project. It's people like you that make pyproj useful and successful. There are many ways
9 to contribute, from writing tutorials or examples, improvements to the documentation,
10 submitting bug reports and feature requests, or even writing code which can be incorporated into pyproj for everyone to use.
11
12 Following these guidelines helps to communicate that you respect the time of the
13 developers managing and developing this open source project. In return, they
14 should reciprocate that respect in addressing your issue, assessing changes, and
15 helping you finalize your pull requests.
16
17 So, please take a few minutes to read through this guide and get setup for success with your pyproj contributions. We're glad you're here!
18
19 ## What Can I Do?
20 * Tackle any [issues](https://github.com/pyproj4/pyproj/issues) you wish! We have a special
21 label for issues that beginners might want to try. Have a look at our
22 [current beginner issues.](https://github.com/pyproj4/pyproj/issues?q=is%3Aopen+is%3Aissue+label%3A%22Difficulty%3A+Beginner%22)
23 Also have a look at if the issue is already assigned to someone - this helps us make sure that work is not duplicated if the issue is already being worked on by someone else.
24
25 * Contribute code you already have. It does not need to be perfect! We will help you clean
26 things up, test it, etc.
27
28 * Make a tutorial or example of how to do something.
29
30 * Improve documentation of a feature you found troublesome.
31
32 * File a new issue if you run into problems!
33
34 ## Ground Rules
35 The goal is to maintain a diverse community that's pleasant for everyone. Please
36 be considerate and respectful of others by following our
37 [code of conduct](https://github.com/pyproj4/pyproj/blob/master/CODE_OF_CONDUCT.md).
38
39 Other items:
40
41 * Each pull request should consist of a logical collection of changes. You can
42 include multiple bug fixes in a single pull request, but they should be related.
43 For unrelated changes, please submit multiple pull requests.
44 * Do not commit changes to files that are irrelevant to your feature or bugfix
45 (eg: .gitignore).
46 * Be willing to accept criticism and work on improving your code; we don't want
47 to break other users' code, so care must be taken not to introduce bugs.
48 * Be aware that the pull request review process is not immediate, and is
49 generally proportional to the size of the pull request.
50
51 ## Reporting a bug
52 The easiest way to get involved is to report issues you encounter when using pyproj or by
53 requesting something you think is missing.
54
55 * Head over to the [issues](https://github.com/pyproj4/pyproj/issues) page.
56 * Search to see if your issue already exists or has even been solved previously.
57 * If you indeed have a new issue or request, click the "New Issue" button.
58 * Fill in as much of the issue template as is relevant. Please be as specific as possible.
59 Include the version of the code you were using, as well as what operating system you
60 are running. If possible, include complete, minimal example code that reproduces the problem.
61
62 ## Setting up your development environment
63 We recommend using the [conda](https://conda.io/docs/) package manager for your Python
64 environments. Our recommended setup for contributing is:
65
66 * Install [miniconda](https://docs.conda.io/en/latest/miniconda.html) on your system.
67 * Install git on your system if it is not already there (install XCode command line tools on
68 a Mac or git bash on Windows)
69 * Login to your GitHub account and make a fork of the
70 [pyproj repository](https://github.com/pyproj4/pyproj/) by clicking the "Fork" button.
71 * Clone your fork of the pyproj repository (in terminal on Mac/Linux or git shell/
72 GUI on Windows) in the location you'd like to keep it. We are partial to creating a
73 ``git_repos`` directory in our home folder.
74 ``git clone https://github.com/your-user-name/pyproj.git``
75 * Navigate to that folder in the terminal or in Anaconda Prompt if you're on Windows.
76 ``cd pyproj``
77 * Connect your repository to the upstream (main project).
78 ``git remote add upstream https://github.com/pyproj4/pyproj.git``
79 * Create the development environment by running ``conda create -n devel -c conda-forge cython proj numpy shapely xarray pandas``.
80 * If the minimum PROJ version is not yet available, you can build PROJ from source using:
81 ```bash
82 export PROJ_DIR=$PWD/pyproj/proj_dir
83 mkdir $PROJ_DIR
84 bash ci/proj-compile.sh git
85 ```
86 * Activate our new development environment ``conda activate devel`` on Mac/Linux or
87 ``activate devel`` on Windows.
88 * Install development requirements ``pip install -r requirements-dev.txt``
89 * Make an editable install of pyproj by running ``pip install -e .``
90 * Setup pre-commit hooks ``pre-commit install`` and ``pre-commit autoupdate``
91
92 Now you're all set! You have an environment called ``devel`` that you can work in. You'll need
93 to make sure to activate that environment next time you want to use it after closing the
94 terminal or your system. If you want to get back to the root environment, just run
95 ``source deactivate`` (just ``deactivate`` on Windows).
96
97 ## Pull Requests
98
99 The changes to the pyproj source (and documentation) should be made via GitHub pull requests against ``master``, even for those with administration rights. While it's tempting to make changes directly to ``master`` and push them up, it is better to make a pull request so that others can give feedback. If nothing else, this gives a chance for the automated tests to run on the PR. This can eliminate "brown paper bag" moments with buggy commits on the master branch.
100
101 During the Pull Request process, before the final merge, it's a good idea to rebase the branch and squash together smaller commits. It's not necessary to flatten the entire branch, but it can be nice to eliminate small fixes and get the merge down to logically arranged commits. This can also be used to hide sins from history--this is the only chance, since once it hits ``master``, it's there forever!
102
103 **Working on your first Pull Request?** You can learn how from this *free* video series
104 [How to Contribute to an Open Source Project on GitHub](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github), Aaron Meurer's [tutorial on the git workflow](https://www.asmeurer.com/git-workflow/), or the guide [“How to Contribute to Open Source"](https://opensource.guide/how-to-contribute/).
105
106 Commit the changes you made. Chris Beams has written a [guide](https://chris.beams.io/posts/git-commit/) on how to write good commit messages.
107
108 Push to your fork and [submit a pull request]( https://github.com/pyproj4/pyproj/compare/).
109
110 ## Documentation
111 Now that you've made your awesome contribution, it's time to tell the world how to use it.
112 Writing documentation strings is really important to make sure others use your functionality properly. Didn't write new functions? That's fine, but be sure that the documentation for the code you touched is still in great shape. It is not uncommon to find some strange wording or clarification that you can take care of while you are here. If you added a new function make sure that it gets marked as included if appropriate in the GEMPAK conversion table.
113
114 You can write examples in the documentation if they are simple concepts to demonstrate. If
115 your feature is more complex, consider adding to the examples or tutorials for pyproj.
116
117 You can build the documentation locally to see how your changes will look.
118 * Install docs requirements: ``make install-docs``
119 * Build the docs: ``make docs``
120 * Or, to build and open in a browser: ``make docs-browser``
121
122 ## Tests
123 Unit tests are the lifeblood of the project, as it ensures that we can continue to add and
124 change the code and stay confident that things have not broken. Running the tests requires
125 ``pytest``, which is easily available through ``conda`` or ``pip``. It was also installed if you made our default ``devel`` environment.
126
127 ### Running Tests
128 Running the tests can be done by running ``py.test``. Make sure you install the test requirements before running the tests ``pip install -r requirements-test.txt``.
129
130 Running the whole test suite isn't that slow, but can be a burden if you're working on just
131 one module or a specific test. It is easy to run tests on a single directory:
132
133 py.test pyproj/calc
134
135 A specific test can be run as:
136
137 py.test -k test_my_test_func_name
138
139 ### Writing Tests
140 Tests should ideally hit all of the lines of code added or changed. We have automated
141 services that can help track down lines of code that are missed by tests. Watching the
142 coverage has even helped find sections of dead code that could be removed!
143
144 Let's say we are adding a simple function to add two numbers and return the result as a float or as a string. (This would be a silly function, but go with us here for demonstration purposes.)
145
146 def add_as_float_or_string(a, b, as_string=False):
147 res = a + b
148 if as_string:
149 return string(res)
150 return res
151
152 I can see two easy tests here: one for the results as a float and one for the results as a
153 string. If I had added this to the ``calc`` module, I'd add those two tests in
154 ``tests/test_calc.py``.
155
156 def test_add_as_float_or_string_defaults():
157 res = add_as_float_or_string(3, 4)
158 assert(res, 7)
159
160
161 def test_add_as_float_or_string_string_return():
162 res = add_as_float_or_string(3, 4, as_string=True)
163 assert(res, '7')
164
165 There are plenty of more advanced testing concepts, like dealing with floating point
166 comparisons, parameterizing tests, testing that exceptions are raised, and more. Have a look at the existing tests to get an idea of some of the common patterns.
167
168 ## Code Style
169 pyproj uses the Python code style outlined in [PEP8](https://pep8.org) and [black](https://github.com/python/black).
170
171 We enforce this style as code is added to keep everything clean and uniform. To this end, part of the automated testing for pyproj checks style. To check style
172 locally within the source directory you can use the ``flake8`` and ``black`` tools. Running it from the root of the source directory is as easy as running ``make lint`` in the base of the repository.
173
174 You can also just submit your PR and the kind robots will comment on all style violations as well. It can be a pain to make sure you have the right number of spaces around things, imports in order, and all of the other nits that the bots will find. It is very important though as this consistent style helps us keep pyproj readable, maintainable, and uniform.
175
176 ## What happens after the pull request
177 You've make your changes, documented them, added some tests, and submitted a pull request.
178 What now?
179
180 ### Automated Testing
181 First, our army of never sleeping robots will begin a series of automated checks.
182 The test suite, documentation, style, and more will be checked on various versions of Python with current and legacy packages. Travis CI will run testing on Linux and Mac, Appveyor will run tests on Windows. Other services will kick in and check if there is a drop in code coverage or any style variations that should be corrected. If you see a red mark by a service, something failed and clicking the "Details" link will give you more information. We're happy to help if you are stuck.
183
184 The robots can be difficult to satisfy, but they are there to help everyone write better code. In some cases, there will be exceptions to their suggestions, but these are rare. If you make changes to your code and push again, the tests will automatically run again.
185
186 ### Code Review
187 At this point you're waiting on us. You should expect to hear at least a comment within a
188 couple of days. We may suggest some changes or improvements or alternatives.
189
190 Some things that will increase the chance that your pull request is accepted quickly:
191
192 * Write tests.
193 * Follow [PEP8](https://pep8.org) for style. (The `flake8` utility can help with this.)
194 * Use [black](https://github.com/python/black)
195 * Write a [good commit message](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
196
197 Pull requests will automatically have tests run by Travis. This includes
198 running both the unit tests as well as the `flake8` code linter.
199
200 ### Merging
201 Once we're all happy with the pull request, it's time for it to get merged in. Only the
202 maintainers can merge pull requests and you should never merge a pull request you have commits on as it circumvents the code review. If this is your first or second pull request, we'll likely help by rebasing and cleaning up the commit history for you. As your developement skills increase, we'll help you learn how to do this.
203
204 ## Allcontributors Recognition
205
206 We do our best to recognize contributions, but we may miss some. If we did, please let us know. Also, if you would prefer not to be recognized on the README, please let us know.
207
208
209 ## More Questions?
210 If you're stuck somewhere or are interested in being a part of the community in
211 other ways, feel free to contact us:
212 * [pyproj's Gitter Channel](https://gitter.im/pyproj4-pyproj/community)
213 * ["pyproj" tag on GIS Stack Exchange](https://gis.stackexchange.com/questions/tagged/pyproj)
214
215 ## Futher Reading
216 There are a ton of great resources out there on contributing to open source and on the
217 importance of writing tested and maintainable software.
218 * [GitHub's Contributing to Open Source Guide](https://guides.github.com/activities/contributing-to-open-source/)
219 * [Zen of Scientific Software Maintenance](https://jrleeman.github.io/ScientificSoftwareMaintenance/)
+0
-62
HOW_TO_RELEASE.md less more
0 # Preparing a pyproj release
1
2 Preparing a pyproj release is a two-phase process.
3
4 ## Phase 1: Release Candidate
5
6 In this phase, we want to ensure all the builds work on all platforms and methods
7 of distribution for the next release.
8
9 ### Add the rc postfix
10
11 The first step in this phase is to update the version number `__version__` in `__init__.py`
12 to the next release `<major>.<minor>.<patch>`. Then, add the `rc` style posfix following the [PEP-440](https://www.python.org/dev/peps/pep-0440/#pre-releases) conventions.
13
14 ### Create a tag on the repository
15
16 The next step is to create a tag with the same name as the version just added. This can be done using the git command line or from https://github.com/pyproj4/pyproj/tags.
17
18 ### Test the release builds
19
20 1. Create a draft PR at https://github.com/pyproj4/pyproj-wheels and verify tests pass.
21 2. Create a draft PR at https://github.com/conda-forge/pyproj-feedstock and verify tests pass.
22 3. Verify Windows wheels built properly.
23 4. Verify Debian builds were succesful.
24 5. Verify the docs build successfully.
25
26 ## Phase 2: Make the release
27
28 After the candidate has proven itself, it will be promoted to a final release.
29
30 ### Remove the rc postfix
31
32 Remove the `rc` postfix from the the version number `__version__` in `__init__.py`.
33
34 ### Create a tag on the repository
35
36 The next step is to create a tag with the name `<major>.<minor>.<patch>`. This can be done using the git command line or from https://github.com/pyproj4/pyproj/tags.
37
38 Next, go through the history and add release notes. Make sure to acknowledge contributions made by others in the release. A useful script for automating this task for code contributions is the [pandas announce script](https://github.com/pandas-dev/pandas/blob/bb6135880e5e453d7701764b9f2e4ad3356a68d7/doc/sphinxext/announce.py).
39
40 ### The wheels
41
42 1. Update the PR at https://github.com/pyproj4/pyproj-wheels with the release tag, merge, and download wheels.
43 2. Retrieve Windows wheels from https://www.lfd.uci.edu/~gohlke/pythonlibs.
44
45 ### Create the release sdist
46
47 1. Make sure the directory is clean and checkout the release tag.
48 2. `python setup.py sdist`
49
50 ### Upload to pypi
51
52 Upload the wheels and the sdist `tar.gz` for the release to pypi.
53
54 ### Verify conda-forge build is correct
55
56 A PR for `pyproj` will be generated automatically after you push to pypi.
57 Verify all is correct on the PR at https://github.com/conda-forge/pyproj-feedstock.
58
59 ### Update the docs
60
61 On the `gh-pages` branch, update the stable symlink to point to the next version.
+0
-33
LICENSE_proj4 less more
0
1 All source, data files and other contents of the PROJ.4 package are
2 available under the following terms. Note that the PROJ 4.3 and earlier
3 was "public domain" as is common with US government work, but apparently
4 this is not a well defined legal term in many countries. I am placing
5 everything under the following MIT style license because I believe it is
6 effectively the same as public domain, allowing anyone to use the code as
7 they wish, including making proprietary derivatives.
8
9 Though I have put my own name as copyright holder, I don't mean to imply
10 I did the work. Essentially all work was done by Gerald Evenden.
11
12 --------------
13
14 Copyright (c) 2000, Frank Warmerdam
15
16 Permission is hereby granted, free of charge, to any person obtaining a
17 copy of this software and associated documentation files (the "Software"),
18 to deal in the Software without restriction, including without limitation
19 the rights to use, copy, modify, merge, publish, distribute, sublicense,
20 and/or sell copies of the Software, and to permit persons to whom the
21 Software is furnished to do so, subject to the following conditions:
22
23 The above copyright notice and this permission notice shall be included
24 in all copies or substantial portions of the Software.
25
26 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
29 THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
32 DEALINGS IN THE SOFTWARE.
0 Metadata-Version: 2.1
1 Name: pyproj
2 Version: 3.1.1.dev0
3 Summary: Python interface to PROJ (cartographic projections and coordinate transformations library)
4 Home-page: https://github.com/pyproj4/pyproj
5 Author: Jeff Whitaker
6 Author-email: jeffrey.s.whitaker@noaa.gov
7 License: MIT
8 Download-URL: http://python.org/pypi/pyproj
9 Project-URL: Documentation, https://pyproj4.github.io/pyproj/
10 Project-URL: Release Notes, https://pyproj4.github.io/pyproj/stable/history.html
11 Project-URL: Bug Tracker, https://github.com/pyproj4/pyproj/issues
12 Project-URL: Source Code, https://github.com/pyproj4/pyproj
13 Description: # pyproj
14
15 Python interface to [PROJ](http://proj.org) (cartographic projections and coordinate transformations library).
16
17 <p align="center">
18 <a href="https://gitter.im/pyproj4-pyproj/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"><img alt="Join the chat at https://gitter.im/pyproj4-pyproj/community" src="https://badges.gitter.im/pyproj4-pyproj/community.svg"></a>
19 <a href="#contributors"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-42-orange.svg?style=flat-square"></a>
20 <a href="https://ci.appveyor.com/project/jswhit/pyproj"><img alt="Appveyor Build Status" src="https://ci.appveyor.com/api/projects/status/8xkka4s97uwhkc64/branch/master?svg=true"></a>
21 <a href="https://github.com/pyproj4/pyproj/actions?query=workflow%3ATests"><img alt="GitHub Actions Build Status" src="https://github.com/pyproj4/pyproj/workflows/Tests/badge.svg"></a>
22 <a href="https://codecov.io/gh/pyproj4/pyproj"><img alt="Codecov Status" src="https://codecov.io/gh/pyproj4/pyproj/branch/master/graph/badge.svg"></a>
23 <a href="https://badge.fury.io/py/pyproj"><img alt="PyPI" src="https://badge.fury.io/py/pyproj.svg"></a>
24 <a href="https://pepy.tech/project/pyproj"><img alt="Downloads" src="https://pepy.tech/badge/pyproj"></a>
25 <a href="https://anaconda.org/conda-forge/pyproj"><img alt="Anaconda-Server Badge" src="https://anaconda.org/conda-forge/pyproj/badges/version.svg"></a>
26 <a href="https://github.com/python/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
27 <a href="https://github.com/pre-commit/pre-commit"><img alt="pre-commit" src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white"></a>
28 <a href="https://zenodo.org/badge/latestdoi/28607354"><img alt="DOI" src="https://zenodo.org/badge/28607354.svg"></a>
29 </p>
30
31
32 ## Documentation
33
34 - Stable: http://pyproj4.github.io/pyproj/stable/
35 - Latest: https://pyproj4.github.io/pyproj/latest/
36
37 ## Bugs/Questions
38
39 - Report bugs/feature requests: https://github.com/pyproj4/pyproj/issues
40 - Ask questions: https://github.com/pyproj4/pyproj/discussions
41 - Ask developer questions: https://gitter.im/pyproj4-pyproj/community
42 - Ask the GIS community: https://gis.stackexchange.com/questions/tagged/pyproj
43
44 ## Contributors ✨
45
46 Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
47
48 <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
49 <!-- prettier-ignore-start -->
50 <!-- markdownlint-disable -->
51 <table>
52 <tr>
53 <td align="center"><a href="https://github.com/jswhit"><img src="https://avatars2.githubusercontent.com/u/579593?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jeff Whitaker</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=jswhit" title="Documentation">📖</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jswhit" title="Tests">⚠️</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jswhit" title="Code">💻</a> <a href="#example-jswhit" title="Examples">💡</a> <a href="#ideas-jswhit" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/pyproj4/pyproj/pulls?q=is%3Apr+reviewed-by%3Ajswhit" title="Reviewed Pull Requests">👀</a> <a href="#question-jswhit" title="Answering Questions">💬</a> <a href="#maintenance-jswhit" title="Maintenance">🚧</a> <a href="#infra-jswhit" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ajswhit" title="Bug reports">🐛</a></td>
54 <td align="center"><a href="https://github.com/snowman2"><img src="https://avatars3.githubusercontent.com/u/8699967?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alan D. Snow</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=snowman2" title="Documentation">📖</a> <a href="https://github.com/pyproj4/pyproj/commits?author=snowman2" title="Tests">⚠️</a> <a href="https://github.com/pyproj4/pyproj/commits?author=snowman2" title="Code">💻</a> <a href="#example-snowman2" title="Examples">💡</a> <a href="#maintenance-snowman2" title="Maintenance">🚧</a> <a href="#infra-snowman2" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-snowman2" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/pyproj4/pyproj/pulls?q=is%3Apr+reviewed-by%3Asnowman2" title="Reviewed Pull Requests">👀</a> <a href="#question-snowman2" title="Answering Questions">💬</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Asnowman2" title="Bug reports">🐛</a></td>
55 <td align="center"><a href="https://github.com/micahcochran"><img src="https://avatars0.githubusercontent.com/u/7433104?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Micah Cochran</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=micahcochran" title="Documentation">📖</a> <a href="https://github.com/pyproj4/pyproj/commits?author=micahcochran" title="Tests">⚠️</a> <a href="https://github.com/pyproj4/pyproj/commits?author=micahcochran" title="Code">💻</a> <a href="#maintenance-micahcochran" title="Maintenance">🚧</a> <a href="#infra-micahcochran" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/pyproj4/pyproj/pulls?q=is%3Apr+reviewed-by%3Amicahcochran" title="Reviewed Pull Requests">👀</a> <a href="#question-micahcochran" title="Answering Questions">💬</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Amicahcochran" title="Bug reports">🐛</a></td>
56 <td align="center"><a href="https://jorisvandenbossche.github.io/"><img src="https://avatars2.githubusercontent.com/u/1020496?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Joris Van den Bossche</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=jorisvandenbossche" title="Documentation">📖</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jorisvandenbossche" title="Code">💻</a> <a href="#ideas-jorisvandenbossche" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/pyproj4/pyproj/pulls?q=is%3Apr+reviewed-by%3Ajorisvandenbossche" title="Reviewed Pull Requests">👀</a> <a href="#question-jorisvandenbossche" title="Answering Questions">💬</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ajorisvandenbossche" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jorisvandenbossche" title="Tests">⚠️</a></td>
57 <td align="center"><a href="https://github.com/cjmayo"><img src="https://avatars1.githubusercontent.com/u/921089?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chris Mayo</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=cjmayo" title="Tests">⚠️</a></td>
58 <td align="center"><a href="https://www.petrel.org"><img src="https://avatars1.githubusercontent.com/u/2298266?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Charles Karney</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=cffk" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=cffk" title="Tests">⚠️</a></td>
59 <td align="center"><a href="http://www.justaprogrammer.net/profile/justin"><img src="https://avatars3.githubusercontent.com/u/146930?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Justin Dearing</b></sub></a><br /><a href="#infra-zippy1981" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
60 </tr>
61 <tr>
62 <td align="center"><a href="https://github.com/jdkloe"><img src="https://avatars3.githubusercontent.com/u/1906112?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jos de Kloe</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=jdkloe" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jdkloe" title="Tests">⚠️</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ajdkloe" title="Bug reports">🐛</a></td>
63 <td align="center"><a href="https://github.com/georgeouzou"><img src="https://avatars3.githubusercontent.com/u/16732042?v=4?s=100" width="100px;" alt=""/><br /><sub><b>George Ouzounoudis</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=georgeouzou" title="Code">💻</a> <a href="#ideas-georgeouzou" title="Ideas, Planning, & Feedback">🤔</a></td>
64 <td align="center"><a href="https://github.com/djhoese"><img src="https://avatars3.githubusercontent.com/u/1828519?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David Hoese</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/pulls?q=is%3Apr+reviewed-by%3Adjhoese" title="Reviewed Pull Requests">👀</a> <a href="#ideas-djhoese" title="Ideas, Planning, & Feedback">🤔</a> <a href="#platform-djhoese" title="Packaging/porting to new platform">📦</a> <a href="https://github.com/pyproj4/pyproj/commits?author=djhoese" title="Documentation">📖</a> <a href="https://github.com/pyproj4/pyproj/commits?author=djhoese" title="Tests">⚠️</a> <a href="https://github.com/pyproj4/pyproj/commits?author=djhoese" title="Code">💻</a></td>
65 <td align="center"><a href="http://mitkin.github.io"><img src="https://avatars3.githubusercontent.com/u/3927849?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mikhail Itkin</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=mitkin" title="Code">💻</a></td>
66 <td align="center"><a href="http://dopplershift.github.io"><img src="https://avatars2.githubusercontent.com/u/221526?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ryan May</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=dopplershift" title="Code">💻</a></td>
67 <td align="center"><a href="https://github.com/artttt"><img src="https://avatars3.githubusercontent.com/u/4626281?v=4?s=100" width="100px;" alt=""/><br /><sub><b>artttt</b></sub></a><br /><a href="#ideas-artttt" title="Ideas, Planning, & Feedback">🤔</a></td>
68 <td align="center"><a href="http://ocefpaf.github.io/python4oceanographers"><img src="https://avatars1.githubusercontent.com/u/950575?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Filipe</b></sub></a><br /><a href="#infra-ocefpaf" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/pyproj4/pyproj/commits?author=ocefpaf" title="Code">💻</a> <a href="#platform-ocefpaf" title="Packaging/porting to new platform">📦</a></td>
69 </tr>
70 <tr>
71 <td align="center"><a href="https://github.com/heitorPB"><img src="https://avatars2.githubusercontent.com/u/13461702?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Heitor</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=heitorPB" title="Documentation">📖</a></td>
72 <td align="center"><a href="https://github.com/sebastic"><img src="https://avatars3.githubusercontent.com/u/4605306?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Bas Couwenberg</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=sebastic" title="Code">💻</a> <a href="#platform-sebastic" title="Packaging/porting to new platform">📦</a> <a href="https://github.com/pyproj4/pyproj/commits?author=sebastic" title="Tests">⚠️</a></td>
73 <td align="center"><a href="https://github.com/nickeubank"><img src="https://avatars0.githubusercontent.com/u/9683693?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nick Eubank</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=nickeubank" title="Code">💻</a></td>
74 <td align="center"><a href="https://www.math.uwaterloo.ca/~mdunphy/"><img src="https://avatars3.githubusercontent.com/u/9088426?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Dunphy</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=mdunphy" title="Documentation">📖</a></td>
75 <td align="center"><a href="http://matthew.dynevor.org"><img src="https://avatars2.githubusercontent.com/u/67612?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matthew Brett</b></sub></a><br /><a href="#infra-matthew-brett" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-matthew-brett" title="Packaging/porting to new platform">📦</a></td>
76 <td align="center"><a href="https://naboa.de"><img src="https://avatars1.githubusercontent.com/u/10531844?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jakob de Maeyer </b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=jdemaeyer" title="Code">💻</a></td>
77 <td align="center"><a href="https://gitter.im"><img src="https://avatars2.githubusercontent.com/u/8518239?v=4?s=100" width="100px;" alt=""/><br /><sub><b>The Gitter Badger</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=gitter-badger" title="Documentation">📖</a></td>
78 </tr>
79 <tr>
80 <td align="center"><a href="http://lizards.opensuse.org/author/bmwiedemann/"><img src="https://avatars3.githubusercontent.com/u/637990?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Bernhard M. Wiedemann</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=bmwiedemann" title="Code">💻</a></td>
81 <td align="center"><a href="https://github.com/ReallyNiceGuy"><img src="https://avatars0.githubusercontent.com/u/6545730?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Marco Aurélio da Costa</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=ReallyNiceGuy" title="Code">💻</a></td>
82 <td align="center"><a href="https://github.com/ChrisBarker-NOAA"><img src="https://avatars2.githubusercontent.com/u/916576?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christopher H. Barker</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=ChrisBarker-NOAA" title="Code">💻</a></td>
83 <td align="center"><a href="https://evers.dev/"><img src="https://avatars3.githubusercontent.com/u/13132571?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kristian Evers</b></sub></a><br /><a href="#question-kbevers" title="Answering Questions">💬</a> <a href="#ideas-kbevers" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/pyproj4/pyproj/commits?author=kbevers" title="Documentation">📖</a></td>
84 <td align="center"><a href="http://www.spatialys.com/en/about/"><img src="https://avatars2.githubusercontent.com/u/1192433?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Even Rouault</b></sub></a><br /><a href="#question-rouault" title="Answering Questions">💬</a></td>
85 <td align="center"><a href="https://github.com/cgohlke"><img src="https://avatars3.githubusercontent.com/u/483428?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christoph Gohlke</b></sub></a><br /><a href="#platform-cgohlke" title="Packaging/porting to new platform">📦</a> <a href="#question-cgohlke" title="Answering Questions">💬</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Acgohlke" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=cgohlke" title="Tests">⚠️</a></td>
86 <td align="center"><a href="https://github.com/chrrrisw"><img src="https://avatars0.githubusercontent.com/u/5555320?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chris Willoughby</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=chrrrisw" title="Code">💻</a></td>
87 </tr>
88 <tr>
89 <td align="center"><a href="https://github.com/glostis"><img src="https://avatars0.githubusercontent.com/u/25295717?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Guillaume Lostis</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=glostis" title="Documentation">📖</a></td>
90 <td align="center"><a href="https://github.com/edpop"><img src="https://avatars3.githubusercontent.com/u/13479292?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Eduard Popov</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=edpop" title="Documentation">📖</a></td>
91 <td align="center"><a href="http://www.personal.psu.edu/jar339"><img src="https://avatars2.githubusercontent.com/u/7864460?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Joe Ranalli</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ajranalli" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jranalli" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jranalli" title="Tests">⚠️</a></td>
92 <td align="center"><a href="https://github.com/gberardinelli"><img src="https://avatars0.githubusercontent.com/u/13799588?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Greg Berardinelli</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/issues?q=author%3Agberardinelli" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=gberardinelli" title="Code">💻</a> <a href="#ideas-gberardinelli" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/pyproj4/pyproj/commits?author=gberardinelli" title="Tests">⚠️</a></td>
93 <td align="center"><a href="https://github.com/mraspaud"><img src="https://avatars1.githubusercontent.com/u/167802?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Martin Raspaud</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/issues?q=author%3Amraspaud" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=mraspaud" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=mraspaud" title="Tests">⚠️</a> <a href="#ideas-mraspaud" title="Ideas, Planning, & Feedback">🤔</a></td>
94 <td align="center"><a href="https://sites.google.com/site/mwtoews/"><img src="https://avatars1.githubusercontent.com/u/895458?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mike Taves</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=mwtoews" title="Tests">⚠️</a></td>
95 <td align="center"><a href="http://davidhaberthür.ch"><img src="https://avatars2.githubusercontent.com/u/1651235?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David Haberthür</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=habi" title="Documentation">📖</a></td>
96 </tr>
97 <tr>
98 <td align="center"><a href="https://github.com/mmodenesi"><img src="https://avatars2.githubusercontent.com/u/5569789?v=4?s=100" width="100px;" alt=""/><br /><sub><b>mmodenesi</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ammodenesi" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=mmodenesi" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=mmodenesi" title="Tests">⚠️</a></td>
99 <td align="center"><a href="https://www.indigoag.com/"><img src="https://avatars0.githubusercontent.com/u/48448372?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jacob-indigo</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ajacob-indigo" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jacob-indigo" title="Code">💻</a></td>
100 <td align="center"><a href="https://rahulporuri.github.io"><img src="https://avatars0.githubusercontent.com/u/1926457?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Poruri Sai Rahul</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=rahulporuri" title="Tests">⚠️</a></td>
101 <td align="center"><a href="https://medium.com/@underchemist"><img src="https://avatars1.githubusercontent.com/u/5283998?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yann-Sebastien Tremblay-Johnston</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=underchemist" title="Documentation">📖</a></td>
102 <td align="center"><a href="https://github.com/odidev"><img src="https://avatars2.githubusercontent.com/u/40816837?v=4?s=100" width="100px;" alt=""/><br /><sub><b>odidev</b></sub></a><br /><a href="#platform-odidev" title="Packaging/porting to new platform">📦</a></td>
103 <td align="center"><a href="https://github.com/idanmiara"><img src="https://avatars.githubusercontent.com/u/26349741?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Idan Miara</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=idanmiara" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=idanmiara" title="Documentation">📖</a> <a href="#example-idanmiara" title="Examples">💡</a> <a href="https://github.com/pyproj4/pyproj/commits?author=idanmiara" title="Tests">⚠️</a></td>
104 <td align="center"><a href="https://github.com/direvus"><img src="https://avatars.githubusercontent.com/u/312229?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brendan Jurd</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=direvus" title="Documentation">📖</a></td>
105 </tr>
106 </table>
107
108 <!-- markdownlint-restore -->
109 <!-- prettier-ignore-end -->
110
111 <!-- ALL-CONTRIBUTORS-LIST:END -->
112
113 This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
114
115 Keywords: GIS,map,geospatial,coordinate-systems,coordinate-transformation,cartographic-projection,geodesic
116 Platform: any
117 Classifier: Development Status :: 4 - Beta
118 Classifier: Intended Audience :: Science/Research
119 Classifier: License :: OSI Approved :: MIT License
120 Classifier: Operating System :: OS Independent
121 Classifier: Programming Language :: Python
122 Classifier: Programming Language :: Python :: 3.7
123 Classifier: Programming Language :: Python :: 3.8
124 Classifier: Programming Language :: Python :: 3.9
125 Classifier: Programming Language :: Python :: 3 :: Only
126 Classifier: Topic :: Scientific/Engineering
127 Classifier: Topic :: Scientific/Engineering :: GIS
128 Classifier: Topic :: Scientific/Engineering :: Mathematics
129 Classifier: Topic :: Software Development :: Libraries :: Python Modules
130 Classifier: Typing :: Typed
131 Requires-Python: >=3.7
132 Description-Content-Type: text/markdown
33
44 <p align="center">
55 <a href="https://gitter.im/pyproj4-pyproj/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"><img alt="Join the chat at https://gitter.im/pyproj4-pyproj/community" src="https://badges.gitter.im/pyproj4-pyproj/community.svg"></a>
6 <a href="#contributors"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-41-orange.svg?style=flat-square"></a>
6 <a href="#contributors"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-42-orange.svg?style=flat-square"></a>
77 <a href="https://ci.appveyor.com/project/jswhit/pyproj"><img alt="Appveyor Build Status" src="https://ci.appveyor.com/api/projects/status/8xkka4s97uwhkc64/branch/master?svg=true"></a>
88 <a href="https://github.com/pyproj4/pyproj/actions?query=workflow%3ATests"><img alt="GitHub Actions Build Status" src="https://github.com/pyproj4/pyproj/workflows/Tests/badge.svg"></a>
99 <a href="https://codecov.io/gh/pyproj4/pyproj"><img alt="Codecov Status" src="https://codecov.io/gh/pyproj4/pyproj/branch/master/graph/badge.svg"></a>
8888 <td align="center"><a href="https://medium.com/@underchemist"><img src="https://avatars1.githubusercontent.com/u/5283998?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yann-Sebastien Tremblay-Johnston</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=underchemist" title="Documentation">📖</a></td>
8989 <td align="center"><a href="https://github.com/odidev"><img src="https://avatars2.githubusercontent.com/u/40816837?v=4?s=100" width="100px;" alt=""/><br /><sub><b>odidev</b></sub></a><br /><a href="#platform-odidev" title="Packaging/porting to new platform">📦</a></td>
9090 <td align="center"><a href="https://github.com/idanmiara"><img src="https://avatars.githubusercontent.com/u/26349741?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Idan Miara</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=idanmiara" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=idanmiara" title="Documentation">📖</a> <a href="#example-idanmiara" title="Examples">💡</a> <a href="https://github.com/pyproj4/pyproj/commits?author=idanmiara" title="Tests">⚠️</a></td>
91 <td align="center"><a href="https://github.com/direvus"><img src="https://avatars.githubusercontent.com/u/312229?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brendan Jurd</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=direvus" title="Documentation">📖</a></td>
9192 </tr>
9293 </table>
9394
+0
-158
appveyor.yml less more
0 platform:
1 - x64
2
3 # This is based on file and files in ci/appveyor are from
4 # https://github.com/ogrisel/python-appveyor-demo
5 environment:
6 global:
7 # SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
8 # /E:ON and /V:ON options are not enabled in the batch script intepreter
9 # See: http://stackoverflow.com/a/13751649/163740
10 CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\ci\\appveyor\\run_with_env.cmd"
11 PROJ_BASE_DIR: "%APPVEYOR_BUILD_FOLDER%\\proj_install"
12 PROJ_NETWORK: "ON"
13
14 matrix:
15 # Pre-installed Python versions
16 # See: http://www.appveyor.com/docs/installed-software#python
17 # build is limited to 60 minutes, without caching each build takes 10-30 minutes
18 # with caching build takes less than 1 minute
19 - PYTHON: "C:\\Python37-x64"
20 PYTHON_VERSION: "3.7"
21 PYTHON_ARCH: "64"
22 VS_VERSION: Visual Studio 14
23 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
24 PROJSOURCE: 8.0.0
25 BUILD_SHARED_LIBS: ON
26 # - PYTHON: "C:\\Python37-x64"
27 # PYTHON_VERSION: "3.8"
28 # PYTHON_ARCH: "64"
29 # VS_VERSION: Visual Studio 14
30 # APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
31 # PROJSOURCE: 7.2.1
32 # BUILD_SHARED_LIBS: ON
33 # - PYTHON: "C:\\Python37-x64"
34 # PYTHON_VERSION: "3.7"
35 # PYTHON_ARCH: "64"
36 # VS_VERSION: Visual Studio 14
37 # APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
38 # PROJSOURCE: git
39 # BUILD_SHARED_LIBS: ON
40 # matrix:
41 # allow_failures:
42 # - PYTHON: "C:\\Python37-x64"
43 # PYTHON_VERSION: "3.7"
44 # PYTHON_ARCH: "64"
45 # VS_VERSION: Visual Studio 14
46 # APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
47 # PROJSOURCE: git
48 # BUILD_SHARED_LIBS: ON
49
50 shallow_clone: true
51
52 cache:
53 - C:\Tools\vcpkg\installed\ -> appveyor.yml
54 - C:\Users\appveyor\AppData\Local\pip\Cache\wheels -> appveyor.yml
55 - "%PROJ_BASE_DIR%"
56
57 build_script:
58 - set VCPKG_INSTALLED=C:\Tools\vcpkg\installed\%platform%-windows
59 # If cached directory does not exist, update vcpkg and install dependencies
60 # The checkout of a precise sha1 for VS2015 is a workaround for https://github.com/microsoft/vcpkg/issues/11666
61 - if not exist %VCPKG_INSTALLED%\bin (
62 cd "C:\Tools\vcpkg" &
63 git pull > nul &
64 (if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2015" (git checkout a64dc07690bc8806e717e190f62eb58e198b599c)) &
65 .\bootstrap-vcpkg.bat -disableMetrics &
66 vcpkg install sqlite3[core,tool]:"%platform%"-windows &
67 vcpkg install tiff:"%platform%"-windows &
68 vcpkg install curl:"%platform%"-windows &
69 cd %APPVEYOR_BUILD_FOLDER%
70 )
71 - dir %VCPKG_INSTALLED%\bin
72 - set PATH=%VCPKG_INSTALLED%\bin;%PATH%
73 # See https://www.appveyor.com/docs/lang/cpp/
74 - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2015" (
75 call "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 &
76 call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64
77 )
78 - if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017"
79 (call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" %platform% )
80 # setup PROJ
81 - set PROJ_DIR=%PROJ_BASE_DIR%\proj-%PROJSOURCE:~0,5%
82 - if "%PROJSOURCE%" == "git" git clone https://github.com/OSGeo/PROJ.git proj-git
83 - if "%PROJSOURCE%" == "git" rmdir /s /q %PROJ_DIR%
84 - if not "%PROJSOURCE%" == "git" if not exist %PROJ_DIR% set BUILD_PROJ_STABLE=1
85 - if defined BUILD_PROJ_STABLE curl -o "proj-%PROJSOURCE:~0,5%.zip" "https://download.osgeo.org/proj/proj-%PROJSOURCE%.zip"
86 - if defined BUILD_PROJ_STABLE 7z x -aoa -y "proj-%PROJSOURCE:~0,5%.zip"
87 - if not exist %PROJ_DIR% cd "%APPVEYOR_BUILD_FOLDER%\proj-%PROJSOURCE:~0,5%"
88 #
89 - if "%PROJSOURCE%" == "git" set BUILD_PROJ=1
90 - if defined BUILD_PROJ_STABLE set BUILD_PROJ=1
91 - if defined BUILD_PROJ mkdir build
92 - if defined BUILD_PROJ cd build
93 - if defined BUILD_PROJ cmake -GNinja .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS="%BUILD_SHARED_LIBS%" -DCMAKE_C_FLAGS="/WX" -DCMAKE_CXX_FLAGS="/WX" -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_INSTALL_PREFIX="%PROJ_DIR%"
94 - if defined BUILD_PROJ ninja -v
95 - if defined BUILD_PROJ ninja install
96 - set PATH=%PROJ_DIR%\bin;%PATH%
97 - set PROJ_LIB=%PROJ_DIR%\share\proj
98 - cd %APPVEYOR_BUILD_FOLDER%
99 - proj
100 # Build and install pyproj
101 - "python -m pip install \"pip>=10.0.1,<19.1\""
102 - set PYPROJ_FULL_COVERAGE=YES
103 - "python -m pip install -e ."
104 - "python -m pip install -r requirements-dev.txt"
105 - "python -m pip install -r requirements-test.txt"
106
107
108 install:
109 - ECHO "Filesystem root:"
110 - ps: "ls \"C:/\""
111
112 # Install Python (from the official .msi of http://python.org) and pip when
113 # not already installed.
114 # - ps: if (-not(Test-Path($env:PYTHON))) { & ci\appveyor\install.ps1 }
115
116 # Prepend newly installed Python to the PATH of this build (this cannot be
117 # done from inside the powershell script as it would require to restart
118 # the parent CMD process).
119 - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
120
121 # Check that we have the expected version and architecture for Python
122 - "python --version"
123 - "python -c \"import struct; print(struct.calcsize('P') * 8)\""
124
125 # Upgrade to the latest version of pip to avoid it displaying warnings
126 # about it being out of date.
127 - "python -m pip install --disable-pip-version-check --user --upgrade pip==19.0.3"
128
129 # install wheel, caching
130 - "python -m pip install wheel"
131
132 test_script:
133 # Run the project tests
134 - "%CMD_IN_ENV% python -c \"import pyproj; pyproj.Proj('epsg:4269')\""
135 - "%CMD_IN_ENV% py.test --cov-report term-missing --cov=pyproj -v -s"
136
137 # TODO: build wheels
138 # after_test:
139 # If tests are successful, create binary packages for the project.
140 # - set PROJ_WHEEL=true
141 # - "%CMD_IN_ENV% python setup.py bdist_wheel"
142 # - "%CMD_IN_ENV% python setup.py bdist_wininst"
143 # - "%CMD_IN_ENV% python setup.py bdist_msi"
144 # test wheel
145 # - python -m pip install pyproj --ignore-installed -f dist
146 # - python -c "import pyproj; pyproj.Proj('epsg:4269')"
147 # cleanup for test dir
148 # - if %PROJSOURCE% == git del /F /Q dist\*
149 # - ps: "ls dist"
150
151 artifacts:
152 # Archive the generated packages in the ci.appveyor.com build report.
153 - path: dist\*
154
155 #on_success:
156 # - TODO: upload the content of dist/*.whl to a public wheelhouse
157 #
+0
-88
ci/appveyor/run_with_env.cmd less more
0 :: To build extensions for 64 bit Python 3, we need to configure environment
1 :: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of:
2 :: MS Windows SDK for Windows 7 and .NET Framework 4 (SDK v7.1)
3 ::
4 :: To build extensions for 64 bit Python 2, we need to configure environment
5 :: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of:
6 :: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0)
7 ::
8 :: 32 bit builds, and 64-bit builds for 3.5 and beyond, do not require specific
9 :: environment configurations.
10 ::
11 :: Note: this script needs to be run with the /E:ON and /V:ON flags for the
12 :: cmd interpreter, at least for (SDK v7.0)
13 ::
14 :: More details at:
15 :: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows
16 :: http://stackoverflow.com/a/13751649/163740
17 ::
18 :: Author: Olivier Grisel
19 :: License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/
20 ::
21 :: Notes about batch files for Python people:
22 ::
23 :: Quotes in values are literally part of the values:
24 :: SET FOO="bar"
25 :: FOO is now five characters long: " b a r "
26 :: If you don't want quotes, don't include them on the right-hand side.
27 ::
28 :: The CALL lines at the end of this file look redundant, but if you move them
29 :: outside of the IF clauses, they do not run properly in the SET_SDK_64==Y
30 :: case, I don't know why.
31 @ECHO OFF
32
33 SET COMMAND_TO_RUN=%*
34 SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows
35 SET WIN_WDK=c:\Program Files (x86)\Windows Kits\10\Include\wdf
36
37 :: Extract the major and minor versions, and allow for the minor version to be
38 :: more than 9. This requires the version number to have two dots in it.
39 SET MAJOR_PYTHON_VERSION=%PYTHON_VERSION:~0,1%
40 IF "%PYTHON_VERSION:~3,1%" == "." (
41 SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,1%
42 ) ELSE (
43 SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,2%
44 )
45
46 :: Based on the Python version, determine what SDK version to use, and whether
47 :: to set the SDK for 64-bit.
48 IF %MAJOR_PYTHON_VERSION% == 2 (
49 SET WINDOWS_SDK_VERSION="v7.0"
50 SET SET_SDK_64=Y
51 ) ELSE (
52 IF %MAJOR_PYTHON_VERSION% == 3 (
53 SET WINDOWS_SDK_VERSION="v7.1"
54 IF %MINOR_PYTHON_VERSION% LEQ 4 (
55 SET SET_SDK_64=Y
56 ) ELSE (
57 SET SET_SDK_64=N
58 IF EXIST "%WIN_WDK%" (
59 :: See: https://connect.microsoft.com/VisualStudio/feedback/details/1610302/
60 REN "%WIN_WDK%" 0wdf
61 )
62 )
63 ) ELSE (
64 ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%"
65 EXIT 1
66 )
67 )
68
69 IF %PYTHON_ARCH% == 64 (
70 IF %SET_SDK_64% == Y (
71 ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture
72 SET DISTUTILS_USE_SDK=1
73 SET MSSdk=1
74 "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION%
75 "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release
76 ECHO Executing: %COMMAND_TO_RUN%
77 call %COMMAND_TO_RUN% || EXIT 1
78 ) ELSE (
79 ECHO Using default MSVC build environment for 64 bit architecture
80 ECHO Executing: %COMMAND_TO_RUN%
81 call %COMMAND_TO_RUN% || EXIT 1
82 )
83 ) ELSE (
84 ECHO Using default MSVC build environment for 32 bit architecture
85 ECHO Executing: %COMMAND_TO_RUN%
86 call %COMMAND_TO_RUN% || EXIT 1
87 )
+0
-20
ci/proj-compile.sh less more
0 #!/bin/bash
1 pushd .
2 echo "Building PROJ $1 version from source..."
3 if [[ $1 == "git" ]]; then
4 git clone https://github.com/OSGeo/PROJ.git proj-git
5 else
6 curl https://download.osgeo.org/proj/proj-$1.tar.gz > "proj-${1:0:5}.tar.gz"
7 tar zxf "proj-${1:0:5}.tar.gz"
8 fi
9 cd "proj-${1:0:5}"
10 # build using autotools
11 sh autogen.sh
12 ./configure --prefix=$PROJ_DIR
13 make
14 make install
15 # build using cmake
16 #cmake . -DCMAKE_INSTALL_PREFIX=$PROJ_DIR
17 #cmake --build .
18 #make install
19 popd
+0
-6
codecov.yml less more
0 coverage:
1 status:
2 project:
3 default:
4 target: 94% # the required coverage value
5 threshold: 0.2% # the leniency in hitting the target
0 python-pyproj (3.1.0+git20210719.1.aeb781f-1) UNRELEASED; urgency=low
1
2 * New upstream snapshot.
3
4 -- Debian Janitor <janitor@jelmer.uk> Sat, 24 Jul 2021 00:27:23 -0000
5
06 python-pyproj (3.1.0-1~exp1) experimental; urgency=medium
17
28 * New upstream release.
228228
229229 To get more debugging information from the internal PROJ code:
230230
231 1. Set the `PROJ_DEBUG <https://proj.org/usage/environmentvars.html#envvar-PROJ_DEBUG>`__
231 1. Set the :envvar:`PROJ_DEBUG`
232232 environment variable to the desired level.
233233
234234 2. Activate logging in `pyproj` with the devel `DEBUG`:
0 .. _network:
0 .. _network_api:
11
22 PROJ Network Settings
33 ======================
55
66 The `pyproj.Transformer` has the capabilities of performing 2D, 3D, and 4D (time)
77 transformations. It can do anything that the PROJ command line programs
8 `proj <https://proj.org/apps/proj.html>`__, `cs2cs <https://proj.org/apps/cs2cs.html>`__,
9 and `cct <https://proj.org/apps/cct.html>`__ can do.
8 :ref:`proj`, :ref:`cs2cs`, and :ref:`cct` can do.
109 This means that it allows translation between any pair of definable coordinate systems,
1110 including support for datum transformation.
1211
3939 "sphinx.ext.intersphinx",
4040 "sphinxarg.ext",
4141 ]
42
43 intersphinx_mapping = {
44 "proj": ("https://proj.org/", None),
45 }
4246
4347 # Add any paths that contain templates here, relative to this directory.
4448 templates_path = ["_templates"]
2222
2323 osr_crs = SpatialReference()
2424 osr_crs.ImportFromEPSG(4326)
25 proj_crs = CRS.from_wkt(osr_crs.ExportToWkt())
25 if osgeo.version_info.major < 3:
26 proj_crs = CRS.from_wkt(osr_crs.ExportToWkt())
27 else:
28 proj_crs = CRS.from_wkt(osr_crs.ExportToWkt(["FORMAT=WKT2_2018"]))
2629
2730
2831 Converting from `pyproj.crs.CRS` to `osgeo.osr.SpatialReference`
5760 If you have `rasterio >= 1.0.14`, then you can pass in the `rasterio.crs.CRS`
5861 directly::
5962
60 import rasterio.crs
61 from pyproj.crs import CRS
62
63 rio_crs = rasterio.crs.CRS.from_epsg(4326)
64 proj_crs = CRS.from_user_input(rio_crs)
63 import rasterio
64 import rasterio.crs
65 from pyproj.crs import CRS
66
67 with rasterio.Env(OSR_WKT_FORMAT="WKT2_2018"):
68 rio_crs = rasterio.crs.CRS.from_epsg(4326)
69 proj_crs = CRS.from_user_input(rio_crs)
6570
6671 Otherwise, you should use the `wkt` property::
6772
6873 import rasterio.crs
6974 from pyproj.crs import CRS
7075
71 rio_crs = rasterio.crs.CRS.from_epsg(4326)
72 proj_crs = CRS.from_wkt(rio_crs.wkt)
76 with rasterio.Env(OSR_WKT_FORMAT="WKT2_2018"):
77 rio_crs = rasterio.crs.CRS.from_epsg(4326)
78 proj_crs = CRS.from_wkt(rio_crs.wkt)
7379
7480 Converting from `pyproj.crs.CRS` to `rasterio.crs.CRS`
7581 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
120126 import fiona
121127 from pyproj.crs import CRS
122128
123 with fiona.open(...) as fds:
129 with fiona.Env(OSR_WKT_FORMAT="WKT2_2018"), fiona.open(...) as fds:
124130 proj_crs = CRS.from_wkt(fds.crs_wkt)
125131
126132
66
77 Also see:
88 - :ref:`examples`
9 - `PROJ FAQ <https://proj.org/faq.html>`__
10
11
12 What is the best format to store the CRS information?
13 -----------------------------------------------------
9 - :ref:`PROJ FAQ <faq>`
10
11
12 What are the best formats to store the CRS information?
13 --------------------------------------------------------
14
15 In general, `Well-Known Text (WKT) <https://en.wikipedia.org/wiki/Well-known_text_representation_of_coordinate_reference_systems>`__
16 or `Spatial Reference ID
17 (SRID) <https://en.wikipedia.org/wiki/Spatial_reference_system>`__, such as EPSG
18 codes, are the preferred formats to describe a CRS.
19
20 .. note:: WKT2 is preferred over WKT1.
21
1422 PROJ strings can be lossy for storing CRS information.
1523 If you can avoid it, it is best to not use them.
1624 Additionally, PROJ strings will likely not be supported
00 Change Log
11 ==========
2
3 Latest
4 ------
5 - ENH: Allow cimport (pull #870)
6 - REF: Handle deprecation of proj_context_set_autoclose_database (issue #866)
7 - DOC: Improve FAQ text about CRS formats (issue #789)
28
39 3.1.0
410 -----
2935 * Minimum PROJ version 7.2 (issues #599 & #689)
3036 * WHL: Removed datumgrids from wheels because not needed with RFC 4 (pull #628)
3137 * WHL: Wheels contain PROJ 7.2
32 * ENH: Added :ref:`network` (#675, #691, #695)
38 * ENH: Added :ref:`network_api` (#675, #691, #695)
3339 * ENH: Added ability to use global context (issue #661)
3440 * ENH: Added transformation grid sync API/CLI (issue #572)
3541 * ENH: Support obects with '__array__' method (pandas.Series, xarray.DataArray, dask.array.Array) (issue #573)
6161
6262 PROJ is required when building from source.
6363
64 Installation instructions: https://proj.org/install.html
64 :ref:`PROJ Installation Instructions <install>`
6565
6666 You can also download PROJ from:
6767
00 Documentation Archive
11 =====================
22
3 - `3.1.0 <https://pyproj4.github.io/pyproj/3.1.0/>`_
34 - `3.0.1 <https://pyproj4.github.io/pyproj/3.0.1/>`_
4 - `3.0.0 <https://pyproj4.github.io/pyproj/3.0.0/>`_
55 - `2.6.1 <https://pyproj4.github.io/pyproj/v2.6.1rel/>`_
6 - `2.6.0 <https://pyproj4.github.io/pyproj/v2.6.0rel/>`_
76 - `2.5.0 <https://pyproj4.github.io/pyproj/v2.5.0rel/>`_
87 - `2.4.2 <https://pyproj4.github.io/pyproj/v2.4.2rel/>`_
9 - `2.4.1 <https://pyproj4.github.io/pyproj/v2.4.1rel/>`_
10 - `2.4.0 <https://pyproj4.github.io/pyproj/v2.4.0rel/>`_
118 - `2.3.1 <https://pyproj4.github.io/pyproj/v2.3.1rel/>`_
12 - `2.3.0 <https://pyproj4.github.io/pyproj/v2.3.0rel/>`_
139 - `2.2.2 <https://pyproj4.github.io/pyproj/v2.2.2rel/>`_
14 - `2.2.1 <https://pyproj4.github.io/pyproj/v2.2.1rel/>`_
15 - `2.2.0 <https://pyproj4.github.io/pyproj/v2.2.0rel/>`_
1610 - `2.1.3 <https://pyproj4.github.io/pyproj/v2.1.3rel/>`_
1711 - `1.9.6 <https://pyproj4.github.io/pyproj/v1.9.6rel/>`_
55 Transformation grids improve accuracy when you are performing datum transformations.
66
77 More information about the data available is located under the PROJ
8 `resource files <https://proj.org/resource_files.html#transformation-grids>`__
9 documentation.
8 :ref:`resource files <datumgrid>` documentation.
109
11 .. note:: `pyproj` API for managing the :ref:`data_directory` and :ref:`network`.
10 .. note:: `pyproj` API for managing the :ref:`data_directory` and :ref:`network_api`.
1211
1312 .. note:: pyproj 3 wheels do not include any transformation grids.
1413
2019 ^^^^^^^^
2120
2221 PROJ 7.0 has introduced, per
23 `PROJ RFC 4: Remote access to grids and GeoTIFF grids <https://proj.org/community/rfc/rfc-4.html#rfc4>`__,
22 :ref:`PROJ RFC 4: Remote access to grids and GeoTIFF grids <rfc4>`,
2423 the capability to work with grid files that are not installed on the local machine where PROJ is executed.
2524
2625 Available methods for download include:
5150
5251 wget --mirror https://cdn.proj.org/ -P ${PROJ_DOWNLOAD_DIR}
5352
54 - The `projsync <https://proj.org/apps/projsync.html>`__ command line program.
53 - The :ref:`projsync <projsync>` command line program.
5554
5655 - `pyproj sync <cli.html#sync>`__ command line program (pyproj 3+; useful if you use pyproj wheels).
5756
58 - Enabling `PROJ network <https://proj.org/usage/network.html>`__ capabilities. See also :ref:`network`.
57 - Enabling :ref:`PROJ network <network>` capabilities. See also :ref:`network_api`.
5958
6059 - Download stable from https://download.osgeo.org/proj or latest from https://github.com/OSGeo/PROJ-data
6160
8887 - Have a machine that can hold and extra 500 MB - 1 GB of data? Then downloading all grids shouldn't be an issue.
8988
9089 - Have a machine with limited space, a great network connection, and PROJ 7+?
91 Look into `PROJ network <https://proj.org/usage/network.html>`__ capabilities. See also :ref:`network`.
90 Look into `PROJ network <network>`__ capabilities. See also :ref:`network_api`.
9291
9392 - Have a machine with limited space and want to pre-download files?
9493
+0
-4
flake8/cython.cfg less more
0 [flake8]
1 filename = *.pyx,*.pxd
2 max-line-length=88
3 select=E501,E302,E203,E111,E114,E221,E303,E128,E231,E126,E265,E305,E301,E127,E261,E271,E129,W291,E222,E241,E123,F403,C400,C401,C402,C403,C404,C405,C406,C407,C408,C409,C410,C411
2727 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
2828 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2929 """
30 __version__ = "3.1.0"
30 __version__ = "3.1.1.dev0"
3131 __all__ = [
3232 "Proj",
3333 "Geod",
202202 The context to use to create the object.
203203 name_string: str
204204 Name of object to create.
205 auth_name: str, optional
205 auth_name: str
206206 The authority name to refine search.
207207 If None, will search all authorities.
208208 pj_type: PJ_TYPE
403403
404404 Parameters
405405 ----------
406 version: pyproj.enums.WktVersion
406 version: pyproj.enums.WktVersion, default=pyproj.enums.WktVersion.WKT2_2019
407407 The version of the WKT output.
408 Default is :attr:`pyproj.enums.WktVersion.WKT2_2019`.
409 pretty: bool
410 If True, it will set the output to be a multiline string. Defaults to False.
408 pretty: bool, default=False
409 If True, it will set the output to be a multiline string.
411410
412411 Returns
413412 -------
423422
424423 Parameters
425424 ----------
426 pretty: bool
427 If True, it will set the output to be a multiline string. Defaults to False.
428 indentation: int
429 If pretty is True, it will set the width of the indentation. Default is 2.
425 pretty: bool, default=False
426 If True, it will set the output to be a multiline string.
427 indentation: int, default=2
428 If pretty is True, it will set the width of the indentation.
430429
431430 Returns
432431 -------
691690
692691 Parameters
693692 ----------
694 rotated_pole: bool, optional
693 rotated_pole: bool, default=False
695694 If True, the geographic coordinates are on a rotated pole grid.
696695 This corresponds to the rotated_latitude_longitude grid_mapping_name.
697 Default is False.
698696
699697 Returns
700698 -------
10231021 Ellipsoid name.
10241022 auth_name: str, optional
10251023 The authority name to refine search (e.g. 'EPSG').
1026 If None, will search all authorities. Default is None.
1024 If None, will search all authorities.
10271025
10281026 Returns
10291027 -------
12711269 Prime Meridian name.
12721270 auth_name: str, optional
12731271 The authority name to refine search (e.g. 'EPSG').
1274 If None, will search all authorities. Default is None.
1272 If None, will search all authorities.
12751273
12761274 Returns
12771275 -------
14991497 auth_name: str
15001498 The authority name to refine search (e.g. 'EPSG').
15011499 If None, will search all authorities.
1502 datum_type: DatumType, optional
1500 datum_type: DatumType
15031501 The datum type to create.
15041502
15051503 Returns
15411539 Datum name.
15421540 auth_name: str, optional
15431541 The authority name to refine search (e.g. 'EPSG').
1544 If None, will search all authorities. Default is None.
1542 If None, will search all authorities.
15451543 datum_type: DatumType, optional
1546 The datum type to create. Default is from any datum type.
1544 The datum type to create. If it is None, it uses any datum type.
15471545
15481546 Returns
15491547 -------
19361934 Name of the authority.
19371935 code: str or int
19381936 The code used by the authority.
1939 use_proj_alternative_grid_names: bool, optional
1940 Use the PROJ alternative grid names. Default is False.
1937 use_proj_alternative_grid_names: bool, default=False
1938 Use the PROJ alternative grid names.
19411939
19421940 Returns
19431941 -------
19681966 ----------
19691967 code: str or int
19701968 The code used by EPSG.
1971 use_proj_alternative_grid_names: bool, optional
1972 Use the PROJ alternative grid names. Default is False.
1969 use_proj_alternative_grid_names: bool, default=False
1970 Use the PROJ alternative grid names.
19731971
19741972 Returns
19751973 -------
21062104 Coordinate Operation name.
21072105 auth_name: str, optional
21082106 The authority name to refine search (e.g. 'EPSG').
2109 If None, will search all authorities. Default is None.
2107 If None, will search all authorities.
21102108 coordinate_operation_type: CoordinateOperationType, optional
2111 The coordinate operation type to create.
2112 Default is CoordinateOperationType.CONVERSION.
2109 The coordinate operation type to create. Default is
2110 ``pyproj.crs.enums.CoordinateOperationType.CONVERSION``
21132111
21142112 Returns
21152113 -------
22092207
22102208 Parameters
22112209 ----------
2212 version: pyproj.enums.ProjVersion
2210 version: pyproj.enums.ProjVersion, default=pyproj.enums.ProjVersion.PROJ_5
22132211 The version of the PROJ string output.
2214 Default is :attr:`pyproj.enums.ProjVersion.PROJ_5`.
2215 pretty: bool
2216 If True, it will set the output to be a multiline string. Defaults to False.
2212 pretty: bool, default=False
2213 If True, it will set the output to be a multiline string.
22172214
22182215 Returns
22192216 -------
26232620
26242621 Parameters
26252622 ----------
2626 version: pyproj.enums.ProjVersion
2623 version: pyproj.enums.ProjVersion, default=pyproj.enums.ProjVersion.PROJ_4
26272624 The version of the PROJ string output.
2628 Default is :attr:`pyproj.enums.ProjVersion.PROJ_4`.
26292625
26302626 Returns
26312627 -------
26642660
26652661 Parameters
26662662 ----------
2667 min_confidence: int, optional
2668 A value between 0-100 where 100 is the most confident. Default is 70.
2663 min_confidence: int, default=70
2664 A value between 0-100 where 100 is the most confident.
26692665 :ref:`min_confidence`
26702666
26712667
27112707 ----------
27122708 auth_name: str, optional
27132709 The name of the authority to filter by.
2714 min_confidence: int, optional
2715 A value between 0-100 where 100 is the most confident. Default is 70.
2710 min_confidence: int, default=70
2711 A value between 0-100 where 100 is the most confident.
27162712 :ref:`min_confidence`
27172713
27182714 Returns
27992795 Parameters
28002796 ----------
28012797 name: str, optional
2802 CRS name. Defaults to use the name of the original CRS.
2798 CRS name. If None, it will use the name of the original CRS.
28032799
28042800 Returns
28052801 -------
28372833 The name of the CRS property.
28382834 property_types: tuple(PJ_TYPE)
28392835 The types to check for for the property.
2840 sub_crs_index: int, optional
2841 THe index of the CRS in the sub CRS list. Default is 0.
2836 sub_crs_index: int, default=0
2837 THe index of the CRS in the sub CRS list.
28422838
28432839 Returns
28442840 -------
29862982 ----------
29872983 other: CRS
29882984 Check if the other object
2989 ignore_axis_order: bool, optional
2985 ignore_axis_order: bool, default=False
29902986 If True, it will compare the CRS class and ignore the axis order.
2991 Default is False.
29922987
29932988 Returns
29942989 -------
1717 # static user data directory to prevent core dumping
1818 # see: https://github.com/pyproj4/pyproj/issues/678
1919 cdef const char* _USER_DATA_DIR = proj_context_get_user_writable_directory(NULL, False)
20
21
22 IF (CTE_PROJ_VERSION_MAJOR, CTE_PROJ_VERSION_MINOR) >= (8, 1):
23 cdef void proj_context_set_autoclose_database(PJ_CONTEXT *ctx,
24 int autoclose):
25 # THIS METHOD IS DEPRECATED IN PROJ 8.1
26 # https://github.com/OSGeo/PROJ/pull/2738
27 pass
28
29 ELSE:
30 cdef extern from "proj.h":
31 void proj_context_set_autoclose_database(PJ_CONTEXT *ctx,
32 int autoclose)
2033
2134
2235 def set_use_global_context(active=None):
4053 If True, it activates the use of the global context. If False,
4154 the use of the global context is deactivated. If None, it uses
4255 the environment variable PYPROJ_GLOBAL_CONTEXT and defaults
43 to False if it is not found. The default is None.
56 to False if it is not found.
4457 """
4558 global _USE_GLOBAL_CONTEXT
4659 if active is None:
5669 Get the PROJ user writable directory for datumgrid files.
5770
5871 This is where grids will be downloaded when
59 `PROJ network <https://proj.org/usage/network.html>`__ capabilities
72 :ref:`PROJ network <network>` capabilities
6073 are enabled. It is also the default download location for the
61 `projsync <https://proj.org/apps/projsync.html>`__ command line program.
74 :ref:`projsync` command line program.
6275
6376 Parameters
6477 ----------
65 create: bool, optional
78 create: bool, default=False
6679 If True, it will create the directory if it does not already exist.
67 Default is False.
6880
6981 Returns
7082 -------
0 # WARNING: cartopy uses pyproj to import PROJ geodesic routines.
1 # Check what cartopy uses before removing any definitions.
2
3
04 cdef extern from "geodesic.h":
15 struct geod_geodesic:
26 pass
6569 GEODESIC_VERSION_MINOR
6670 GEODESIC_VERSION_PATCH
6771
72 # FOR CARTOPY ONLY
73 cdef int GEOD_ARCMODE
74 cdef int GEOD_LATITUDE
75 cdef int GEOD_LONGITUDE
76
77 double geod_geninverse(geod_geodesic*, double, double, double, double,
78 double*, double*, double*, double*, double*,
79 double*, double*) nogil
80 void geod_genposition(geod_geodesicline*, int, double, double*,
81 double*, double*, double*, double*, double*,
82 double*, double*) nogil
83
6884
6985 cdef class Geod:
7086 cdef geod_geodesic _geod_geodesic
323323 The longitude points along a line.
324324 lats: array
325325 The latitude points along a line.
326 radians: bool, optional
326 radians: bool, default=False
327327 If True, the input data is assumed to be in radians.
328328
329329 Returns
386386 An array of longitude values.
387387 lats: array
388388 An array of latitude values.
389 radians: bool, optional
389 radians: bool, default=False
390390 If True, the input data is assumed to be in radians.
391391
392392 Returns
7676
7777 These are the scaling and angular distortion factors.
7878
79 See `PJ_FACTORS documentation <https://proj.org/development/reference/datatypes.html?highlight=pj_factors#c.PJ_FACTORS>`__ # noqa
79 See PROJ :c:type:`PJ_FACTORS` documentation.
8080
8181 Parameters
8282 ----------
574574
575575 Parameters
576576 ----------
577 version: pyproj.enums.ProjVersion
577 version: pyproj.enums.ProjVersion, default=pyproj.enums.ProjVersion.PROJ_5
578578 The version of the PROJ string output.
579 Default is :attr:`pyproj.enums.ProjVersion.PROJ_5`.
580 pretty: bool
581 If True, it will set the output to be a multiline string. Defaults to False.
579 pretty: bool, default=False
580 If True, it will set the output to be a multiline string.
582581
583582 Returns
584583 -------
11 This module is for building operations to be used when
22 building a CRS.
33
4 https://proj.org/operations/
4 :ref:`operations`
55 """
66 import warnings
77 from typing import Any
1616
1717 Class for constructing the Albers Equal Area Conversion.
1818
19 https://proj.org/operations/projections/aea.html
19 :ref:`PROJ docs <aea>`
2020 """
2121
2222 def __new__(
3535 First standard parallel (lat_1).
3636 latitude_second_parallel: float
3737 Second standard parallel (lat_2).
38 latitude_false_origin: float, optional
39 Latitude of projection center (lat_0). Defaults to 0.0.
40 longitude_false_origin: float, optional
41 Longitude of projection center (lon_0). Defaults to 0.0.
42 easting_false_origin: float, optional
43 False easting (x_0). Defaults to 0.0.
44 northing_false_origin: float, optional
45 False northing (y_0). Defaults to 0.0.
38 latitude_false_origin: float, default=0.0
39 Latitude of projection center (lat_0).
40 longitude_false_origin: float, default=0.0
41 Longitude of projection center (lon_0).
42 easting_false_origin: float, default=0.0
43 False easting (x_0).
44 northing_false_origin: float, default=0.0
45 False northing (y_0).
4646 """
4747 aea_json = {
4848 "$schema": "https://proj.org/schemas/v0.2/projjson.schema.json",
108108
109109 Class for constructing the Modified Azimuthal Equidistant conversion.
110110
111 https://proj.org/operations/projections/aeqd.html
111 :ref:`PROJ docs <aeqd>`
112112 """
113113
114114 def __new__(
121121 """
122122 Parameters
123123 ----------
124 latitude_natural_origin: float, optional
125 Latitude of projection center (lat_0). Defaults to 0.0.
126 longitude_natural_origin: float, optional
127 Longitude of projection center (lon_0). Defaults to 0.0.
128 false_easting: float, optional
129 False easting (x_0). Defaults to 0.0.
130 false_northing: float, optional
131 False northing (y_0). Defaults to 0.0.
124 latitude_natural_origin: float, default=0.0
125 Latitude of projection center (lat_0).
126 longitude_natural_origin: float, default=0.0
127 Longitude of projection center (lon_0).
128 false_easting: float, default=0.0
129 False easting (x_0).
130 false_northing: float, default=0.0
131 False northing (y_0).
132132
133133 """
134134 aeqd_json = {
175175
176176 Class for constructing the Geostationary Satellite conversion.
177177
178 https://proj.org/operations/projections/geos.html
178 :ref:`PROJ docs <geos>`
179179 """
180180
181181 def __new__(
194194 Sweep angle axis of the viewing instrument. Valid options are “X” and “Y”.
195195 satellite_height: float
196196 Satellite height.
197 latitude_natural_origin: float, optional
198 Latitude of projection center (lat_0). Defaults to 0.0.
199 longitude_natural_origin: float, optional
200 Longitude of projection center (lon_0). Defaults to 0.0.
201 false_easting: float, optional
202 False easting (x_0). Defaults to 0.0.
203 false_northing: float, optional
204 False northing (y_0). Defaults to 0.0.
197 latitude_natural_origin: float, default=0.0
198 Latitude of projection center (lat_0).
199 longitude_natural_origin: float, default=0.0
200 Longitude of projection center (lon_0).
201 false_easting: float, default=0.0
202 False easting (x_0).
203 false_northing: float, default=0.0
204 False northing (y_0).
205205
206206 """
207207 sweep_angle_axis = sweep_angle_axis.strip().upper()
262262
263263 Class for constructing the Lambert Azimuthal Equal Area conversion.
264264
265 https://proj.org/operations/projections/laea.html
265 :ref:`PROJ docs <laea>`
266266 """
267267
268268 def __new__(
275275 """
276276 Parameters
277277 ----------
278 latitude_natural_origin: float, optional
279 Latitude of projection center (lat_0). Defaults to 0.0.
280 longitude_natural_origin: float, optional
281 Longitude of projection center (lon_0). Defaults to 0.0.
282 false_easting: float, optional
283 False easting (x_0). Defaults to 0.0.
284 false_northing: float, optional
285 False northing (y_0). Defaults to 0.0.
278 latitude_natural_origin: float, default=0.0
279 Latitude of projection center (lat_0).
280 longitude_natural_origin: float, default=0.0
281 Longitude of projection center (lon_0).
282 false_easting: float, default=0.0
283 False easting (x_0).
284 false_northing: float, default=0.0
285 False northing (y_0).
286286
287287 """
288288 laea_json = {
329329
330330 Class for constructing the Lambert Conformal Conic 2SP conversion.
331331
332 https://proj.org/operations/projections/lcc.html
332 :ref:`PROJ docs <lcc>`
333333 """
334334
335335 def __new__(
348348 Latitude of 1st standard parallel (lat_1).
349349 latitude_second_parallel: float
350350 Latitude of 2nd standard parallel (lat_2).
351 latitude_false_origin: float, optional
352 Latitude of projection center (lat_0). Defaults to 0.0.
353 longitude_false_origin: float, optional
354 Longitude of projection center (lon_0). Defaults to 0.0.
355 easting_false_origin: float, optional
356 False easting (x_0). Defaults to 0.0.
357 northing_false_origin: float, optional
358 False northing (y_0). Defaults to 0.0.
351 latitude_false_origin: float, default=0.0
352 Latitude of projection center (lat_0).
353 longitude_false_origin: float, default=0.0
354 Longitude of projection center (lon_0).
355 easting_false_origin: float, default=0.0
356 False easting (x_0).
357 northing_false_origin: float, default=0.0
358 False northing (y_0).
359359
360360 """
361361 lcc_json = {
414414
415415 Class for constructing the Lambert Conformal Conic 1SP conversion.
416416
417 https://proj.org/operations/projections/lcc.html
417 :ref:`PROJ docs <lcc>`
418418 """
419419
420420 def __new__(
428428 """
429429 Parameters
430430 ----------
431 latitude_natural_origin: float, optional
432 Latitude of projection center (lat_0). Defaults to 0.0.
433 longitude_natural_origin: float, optional
434 Longitude of projection center (lon_0). Defaults to 0.0.
435 false_easting: float, optional
436 False easting (x_0). Defaults to 0.0.
437 false_northing: float, optional
438 False northing (y_0). Defaults to 0.0.
439 scale_factor_natural_origin: float, optional
440 Scale factor at natural origin (k_0). Defaults to 1.0.
431 latitude_natural_origin: float, default=0.0
432 Latitude of projection center (lat_0).
433 longitude_natural_origin: float, default=0.0
434 Longitude of projection center (lon_0).
435 false_easting: float, default=0.0
436 False easting (x_0).
437 false_northing: float, default=0.0
438 False northing (y_0).
439 scale_factor_natural_origin: float, default=1.0
440 Scale factor at natural origin (k_0).
441441
442442 """
443443 lcc_json = {
490490
491491 Class for constructing the Lambert Cylindrical Equal Area conversion.
492492
493 https://proj.org/operations/projections/cea.html
493 :ref:`PROJ docs <cea>`
494494 """
495495
496496 def __new__(
503503 """
504504 Parameters
505505 ----------
506 latitude_first_parallel: float, optional
507 Latitude of 1st standard parallel (lat_ts). Defaults to 0.0.
508 longitude_natural_origin: float, optional
509 Longitude of projection center (lon_0). Defaults to 0.0.
510 false_easting: float, optional
511 False easting (x_0). Defaults to 0.0.
512 false_northing: float, optional
513 False northing (y_0). Defaults to 0.0.
506 latitude_first_parallel: float, default=0.0
507 Latitude of 1st standard parallel (lat_ts).
508 longitude_natural_origin: float, default=0.0
509 Longitude of projection center (lon_0).
510 false_easting: float, default=0.0
511 False easting (x_0).
512 false_northing: float, default=0.0
513 False northing (y_0).
514514
515515 """
516516 cea_json = {
563563 when exporting to WKT in PROJ>=7.0.0. Previous version will export it as a
564564 PROJ-based coordinate operation in the WKT.
565565
566 https://proj.org/operations/projections/cea.html
566 :ref:`PROJ docs <cea>`
567567 """
568568
569569 def __new__(
576576 """
577577 Parameters
578578 ----------
579 longitude_natural_origin: float, optional
580 Longitude of projection center (lon_0). Defaults to 0.0.
581 false_easting: float, optional
582 False easting (x_0). Defaults to 0.0.
583 false_northing: float, optional
584 False northing (y_0). Defaults to 0.0.
585 scale_factor_natural_origin: float, optional
586 Scale factor at natural origin (k or k_0). Defaults to 1.0
579 longitude_natural_origin: float, default=0.0
580 Longitude of projection center (lon_0).
581 false_easting: float, default=0.0
582 False easting (x_0).
583 false_northing: float, default=0.0
584 False northing (y_0).
585 scale_factor_natural_origin: float, default=1.0
586 Scale factor at natural origin (k or k_0).
587587
588588 """
589589 from pyproj.crs import CRS
590590
591591 # hack due to: https://github.com/OSGeo/PROJ/issues/1881
592 # https://proj.org/operations/projections/cea.html
593592 proj_string = (
594593 "+proj=cea "
595594 f"+lon_0={longitude_natural_origin} "
608607
609608 Class for constructing the Mercator (variant A) conversion.
610609
611 https://proj.org/operations/projections/merc.html
610 :ref:`PROJ docs <merc>`
612611 """
613612
614613 def __new__(
622621 """
623622 Parameters
624623 ----------
625 longitude_natural_origin: float, optional
626 Latitude of natural origin (lat_0). Defaults to 0.0.
627 longitude_natural_origin: float, optional
628 Longitude of natural origin (lon_0). Defaults to 0.0.
629 false_easting: float, optional
630 False easting (x_0). Defaults to 0.0.
631 false_northing: float, optional
632 False northing (y_0). Defaults to 0.0.
633 scale_factor_natural_origin: float, optional
634 Scale factor at natural origin (k or k_0). Defaults to 1.0
624 longitude_natural_origin: float, default=0.0
625 Latitude of natural origin (lat_0).
626 longitude_natural_origin: float, default=0.0
627 Longitude of natural origin (lon_0).
628 false_easting: float, default=0.0
629 False easting (x_0).
630 false_northing: float, default=0.0
631 False northing (y_0).
632 scale_factor_natural_origin: float, default=1.0
633 Scale factor at natural origin (k or k_0).
635634
636635 """
637636 merc_json = {
684683
685684 Class for constructing the Mercator (variant B) conversion.
686685
687 https://proj.org/operations/projections/merc.html
686 :ref:`PROJ docs <merc>`
688687 """
689688
690689 def __new__(
697696 """
698697 Parameters
699698 ----------
700 latitude_first_parallel: float, optional
701 Latitude of 1st standard parallel (lat_ts). Defaults to 0.0.
702 longitude_natural_origin: float, optional
703 Longitude of projection center (lon_0). Defaults to 0.0.
704 false_easting: float, optional
705 False easting (x_0). Defaults to 0.0.
706 false_northing: float, optional
707 False northing (y_0). Defaults to 0.0.
699 latitude_first_parallel: float, default=0.0
700 Latitude of 1st standard parallel (lat_ts).
701 longitude_natural_origin: float, default=0.0
702 Longitude of projection center (lon_0).
703 false_easting: float, default=0.0
704 False easting (x_0).
705 false_northing: float, default=0.0
706 False northing (y_0).
708707
709708 """
710709 merc_json = {
751750
752751 Class for constructing the Hotine Oblique Mercator (variant B) conversion.
753752
754 https://proj.org/operations/projections/omerc.html
753 :ref:`PROJ docs <omerc>`
755754 """
756755
757756 def __new__(
775774 Azimuth of initial line (azimuth).
776775 angle_from_rectified_to_skew_grid: float
777776 Angle from Rectified to Skew Grid (gamma).
778 scale_factor_on_initial_line: float, optional
779 Scale factor on initial line (k or k_0). Default is 1.0.
780 easting_projection_centre: float, optional
781 Easting at projection centre (x_0). Default is 0.
782 northing_projection_centre: float, optional
783 Northing at projection centre (y_0). Default is 0.
777 scale_factor_on_initial_line: float, default=1.0
778 Scale factor on initial line (k or k_0).
779 easting_projection_centre: float, default=0.0
780 Easting at projection centre (x_0).
781 northing_projection_centre: float, default=0.0
782 Northing at projection centre (y_0).
784783 """
785784 omerc_json = {
786785 "$schema": "https://proj.org/schemas/v0.2/projjson.schema.json",
844843
845844 Class for constructing the Orthographic conversion.
846845
847 https://proj.org/operations/projections/ortho.html
846 :ref:`PROJ docs <ortho>`
848847 """
849848
850849 def __new__(
857856 """
858857 Parameters
859858 ----------
860 latitude_natural_origin: float, optional
861 Latitude of projection center (lat_0). Defaults to 0.0.
862 longitude_natural_origin: float, optional
863 Longitude of projection center (lon_0). Defaults to 0.0.
864 false_easting: float, optional
865 False easting (x_0). Defaults to 0.0.
866 false_northing: float, optional
867 False northing (y_0). Defaults to 0.0.
859 latitude_natural_origin: float, default=0.0
860 Latitude of projection center (lat_0).
861 longitude_natural_origin: float, default=0.0
862 Longitude of projection center (lon_0).
863 false_easting: float, default=0.0
864 False easting (x_0).
865 false_northing: float, default=0.0
866 False northing (y_0).
868867
869868 """
870869 ortho_json = {
911910
912911 Class for constructing the Polar Stereographic A conversion.
913912
914 https://proj.org/operations/projections/stere.html
913 :ref:`PROJ docs <stere>`
915914 """
916915
917916 def __new__(
925924 """
926925 Parameters
927926 ----------
928 latitude_natural_origin: float, optional
927 latitude_natural_origin: float
929928 Latitude of natural origin (lat_0). Either +90 or -90.
930 longitude_natural_origin: float, optional
931 Longitude of natural origin (lon_0). Defaults to 0.0.
932 false_easting: float, optional
933 False easting (x_0). Defaults to 0.0.
934 false_northing: float, optional
935 False northing (y_0). Defaults to 0.0.
936 scale_factor_natural_origin: float, optional
937 Scale factor at natural origin (k or k_0). Defaults to 1.0
929 longitude_natural_origin: float, default=0.0
930 Longitude of natural origin (lon_0).
931 false_easting: float, default=0.0
932 False easting (x_0).
933 false_northing: float, default=0.0
934 False northing (y_0).
935 scale_factor_natural_origin: float, default=0.0
936 Scale factor at natural origin (k or k_0).
938937
939938 """
940939
988987
989988 Class for constructing the Polar Stereographic B conversion.
990989
991 https://proj.org/operations/projections/stere.html
990 :ref:`PROJ docs <stere>`
992991 """
993992
994993 def __new__(
10011000 """
10021001 Parameters
10031002 ----------
1004 latitude_standard_parallel: float, optional
1005 Latitude of standard parallel (lat_ts). Defaults to 0.0.
1006 longitude_origin: float, optional
1007 Longitude of origin (lon_0). Defaults to 0.0.
1008 false_easting: float, optional
1009 False easting (x_0). Defaults to 0.0.
1010 false_northing: float, optional
1011 False northing (y_0). Defaults to 0.0.
1003 latitude_standard_parallel: float, default=0.0
1004 Latitude of standard parallel (lat_ts).
1005 longitude_origin: float, default=0.0
1006 Longitude of origin (lon_0).
1007 false_easting: float, default=0.0
1008 False easting (x_0).
1009 false_northing: float, default=0.0
1010 False northing (y_0).
10121011
10131012 """
10141013 stere_json = {
10551054
10561055 Class for constructing the Sinusoidal conversion.
10571056
1058 https://proj.org/operations/projections/sinu.html
1057 :ref:`PROJ docs <sinu>`
10591058 """
10601059
10611060 def __new__(
10671066 """
10681067 Parameters
10691068 ----------
1070 longitude_natural_origin: float, optional
1071 Longitude of projection center (lon_0). Defaults to 0.0.
1072 false_easting: float, optional
1073 False easting (x_0). Defaults to 0.0.
1074 false_northing: float, optional
1075 False northing (y_0). Defaults to 0.0.
1069 longitude_natural_origin: float, default=0.0
1070 Longitude of projection center (lon_0).
1071 false_easting: float, default=0.0
1072 False easting (x_0).
1073 false_northing: float, default=0.0
1074 False northing (y_0).
10761075
10771076 """
10781077 sinu_json = {
11101109
11111110 Class for constructing the Stereographic conversion.
11121111
1113 https://proj.org/operations/projections/stere.html
1112 :ref:`PROJ docs <stere>`
11141113 """
11151114
11161115 def __new__(
11241123 """
11251124 Parameters
11261125 ----------
1127 latitude_natural_origin: float, optional
1128 Latitude of natural origin (lat_0). Defaults to 0.0.
1129 longitude_natural_origin: float, optional
1130 Longitude of natural origin (lon_0). Defaults to 0.0.
1131 false_easting: float, optional
1132 False easting (x_0). Defaults to 0.0.
1133 false_northing: float, optional
1134 False northing (y_0). Defaults to 0.0.
1135 scale_factor_natural_origin: float, optional
1136 Scale factor at natural origin (k or k_0). Defaults to 1.0
1126 latitude_natural_origin: float, default=0.0
1127 Latitude of natural origin (lat_0).
1128 longitude_natural_origin: float, default=0.0
1129 Longitude of natural origin (lon_0).
1130 false_easting: float, default=0.0
1131 False easting (x_0).
1132 false_northing: float, default=0.0
1133 False northing (y_0).
1134 scale_factor_natural_origin: float, default=1.0
1135 Scale factor at natural origin (k or k_0).
11371136
11381137 """
11391138
11841183
11851184 Class for constructing the UTM conversion.
11861185
1187 https://proj.org/operations/projections/utm.html
1186 :ref:`PROJ docs <utm>`
11881187 """
11891188
11901189 def __new__(cls, zone: str, hemisphere: str = "N"):
11931192 ----------
11941193 zone: int
11951194 UTM Zone between 1-60.
1196 hemisphere: str, optional
1197 Either N for North or S for South. Default is N.
1195 hemisphere: str, default="N"
1196 Either N for North or S for South.
11981197 """
11991198 return cls.from_name(f"UTM zone {zone}{hemisphere}")
12001199
12051204
12061205 Class for constructing the Transverse Mercator conversion.
12071206
1208 https://proj.org/operations/projections/tmerc.html
1207 :ref:`PROJ docs <tmerc>`
12091208 """
12101209
12111210 def __new__(
12191218 """
12201219 Parameters
12211220 ----------
1222 latitude_natural_origin: float, optional
1223 Latitude of projection center (lat_0). Defaults to 0.0.
1224 longitude_natural_origin: float, optional
1225 Longitude of projection center (lon_0). Defaults to 0.0.
1226 false_easting: float, optional
1227 False easting (x_0). Defaults to 0.0.
1228 false_northing: float, optional
1229 False northing (y_0). Defaults to 0.0.
1230 scale_factor_natural_origin: float, optional
1231 Scale factor at natural origin (k or k_0). Defaults to 1.0
1221 latitude_natural_origin: float, default=0.0
1222 Latitude of projection center (lat_0).
1223 longitude_natural_origin: float, default=0.0
1224 Longitude of projection center (lon_0).
1225 false_easting: float, default=0.0
1226 False easting (x_0).
1227 false_northing: float, default=0.0
1228 False northing (y_0).
1229 scale_factor_natural_origin: float, default=1.0
1230 Scale factor at natural origin (k or k_0).
12321231
12331232 """
12341233 tmerc_json = {
12811280
12821281 Class for constructing the Vetical Perspective conversion.
12831282
1284 https://proj.org/operations/projections/nsper.html
1283 :ref:`PROJ docs <nsper>`
12851284 """
12861285
12871286 def __new__(
12981297 ----------
12991298 viewpoint_height: float
13001299 Viewpoint height (h).
1301 latitude_topocentric_origin: float, optional
1302 Latitude of topocentric origin (lat_0). Defaults to 0.0.
1303 longitude_topocentric_origin: float, optional
1304 Longitude of topocentric origin (lon_0). Defaults to 0.0.
1305 ellipsoidal_height_topocentric_origin: float, optional
1306 Ellipsoidal height of topocentric origin. Defaults to 0.0.
1307 false_easting: float, optional
1308 False easting (x_0). Defaults to 0.0.
1309 false_northing: float, optional
1310 False northing (y_0). Defaults to 0.0.
1300 latitude_topocentric_origin: float, default=0.0
1301 Latitude of topocentric origin (lat_0).
1302 longitude_topocentric_origin: float, default=0.0
1303 Longitude of topocentric origin (lon_0).
1304 ellipsoidal_height_topocentric_origin: float, default=0.0
1305 Ellipsoidal height of topocentric origin.
1306 false_easting: float, default=0.0
1307 False easting (x_0).
1308 false_northing: float, default=0.0
1309 False northing (y_0).
13111310
13121311 """
13131312 nsper_json = {
13661365
13671366 Class for constructing the Rotated Latitude Longitude conversion.
13681367
1369 https://proj.org/operations/projections/ob_tran.html
1368 :ref:`PROJ docs <ob_tran>`
13701369 """
13711370
13721371 def __new__(cls, o_lat_p: float, o_lon_p: float, lon_0: float = 0.0):
13791378 o_lon_p: float
13801379 Longitude of the North pole of the unrotated source CRS,
13811380 expressed in the rotated geographic CRS.
1382 lon_0: float, optional
1383 Longitude of projection center (lon_0). Defaults to 0.0.
1381 lon_0: float, default=0.0
1382 Longitude of projection center (lon_0).
13841383
13851384 """
13861385 rot_latlon_json = {
14031402
14041403 Class for constructing the Equidistant Cylintrical (Plate Carrée) conversion.
14051404
1406 https://proj.org/operations/projections/eqc.html
1405 :ref:`PROJ docs <eqc>`
14071406 """
14081407
14091408 def __new__(
14171416 """
14181417 Parameters
14191418 ----------
1420 latitude_first_parallel: float, optional
1421 Latitude of 1st standard parallel (lat_ts). Defaults to 0.0.
1422 latitude_natural_origin: float, optional
1423 Longitude of projection center (lon_0). Defaults to 0.0.
1424 longitude_natural_origin: float, optional
1425 Longitude of projection center (lon_0). Defaults to 0.0.
1426 false_easting: float, optional
1427 False easting (x_0). Defaults to 0.0.
1428 false_northing: float, optional
1429 False northing (y_0). Defaults to 0.0.
1419 latitude_first_parallel: float, default=0.0
1420 Latitude of 1st standard parallel (lat_ts).
1421 latitude_natural_origin: float, default=0.0
1422 Longitude of projection center (lon_0).
1423 longitude_natural_origin: float, default=0.0
1424 Longitude of projection center (lon_0).
1425 false_easting: float, default=0.0
1426 False easting (x_0).
1427 false_northing: float, default=0.0
1428 False northing (y_0).
14301429 """
14311430 eqc_json = {
14321431 "$schema": "https://proj.org/schemas/v0.2/projjson.schema.json",
14991498 ----------
15001499 source_crs: Any
15011500 Input to create the Source CRS.
1502 x_axis_translation: float, optional
1503 X-axis translation. Defaults to 0.0.
1504 y_axis_translation: float, optional
1505 Y-axis translation. Defaults to 0.0.
1506 z_axis_translation: float, optional
1507 Z-axis translation. Defaults to 0.0.
1508 x_axis_rotation: float, optional
1509 X-axis rotation. Defaults to 0.0.
1510 y_axis_rotation: float, optional
1511 Y-axis rotation. Defaults to 0.0.
1512 z_axis_rotation: float, optional
1513 Z-axis rotation. Defaults to 0.0.
1514 scale_difference: float, optional
1515 Scale difference. Defaults to 0.0.
1501 x_axis_translation: float, default=0.0
1502 X-axis translation.
1503 y_axis_translation: float, default=0.0
1504 Y-axis translation.
1505 z_axis_translation: float, default=0.0
1506 Z-axis translation.
1507 x_axis_rotation: float, default=0.0
1508 X-axis rotation.
1509 y_axis_rotation: float, default=0.0
1510 Y-axis rotation.
1511 z_axis_rotation: float, default=0.0
1512 Z-axis rotation.
1513 scale_difference: float, default=0.0
1514 Scale difference.
15161515 """
15171516 from pyproj.crs import CRS
15181517
6868 Parameters
6969 ----------
7070 axis: :class:`pyproj.crs.enums.Ellipsoidal2DCSAxis` or str, optional
71 This is the axis order of the coordinate system.
71 This is the axis order of the coordinate system. Default is
72 :attr:`pyproj.crs.enums.Ellipsoidal2DCSAxis.LONGITUDE_LATITUDE`.
7273 """
7374 return cls.from_json_dict(
7475 {
140141 Parameters
141142 ----------
142143 axis: :class:`pyproj.crs.enums.Ellipsoidal3DCSAxis` or str, optional
143 This is the axis order of the coordinate system.
144 This is the axis order of the coordinate system. Default is
145 :attr:`pyproj.crs.enums.Ellipsoidal3DCSAxis.LONGITUDE_LATITUDE_HEIGHT`.
144146 """
145147 return cls.from_json_dict(
146148 {
286288 ----------
287289 axis: :class:`pyproj.crs.enums.Cartesian2DCSAxis` or str, optional
288290 This is the axis order of the coordinate system.
291 Default is :attr:`pyproj.crs.enums.Cartesian2DCSAxis.EASTING_NORTHING`.
289292 """
290293 return cls.from_json_dict(
291294 {
367370 ----------
368371 axis: :class:`pyproj.crs.enums.VerticalCSAxis` or str, optional
369372 This is the axis direction of the coordinate system.
373 Default is :attr:`pyproj.crs.enums.VerticalCSAxis.GRAVITY_HEIGHT`.
370374 """
371375 return cls.from_json_dict(
372376 {
594594 wkt_version: str or pyproj.enums.WktVersion
595595 Version of WKT supported by CRS.to_wkt.
596596 Default is :attr:`pyproj.enums.WktVersion.WKT2_2019`.
597 errcheck: bool, optional
598 If True, will warn when parameters are ignored. Defaults to False.
597 errcheck: bool, default=False
598 If True, will warn when parameters are ignored.
599599
600600 Returns
601601 -------
728728 Input to create a Vertical Coordinate System accepted by
729729 :meth:`pyproj.crs.CoordinateSystem.from_user_input`
730730 or :class:`pyproj.crs.coordinate_system.VerticalCS`
731 errcheck: bool, optional
731 errcheck: bool, default=False
732732 This parameter is for backwards compatibility with the old version.
733733 It currently does nothing when True or False.
734734
917917 Check if the other object is equivalent to this object.
918918 If the other object is not a CRS, it will try to create one.
919919 On Failure, it will return False.
920 ignore_axis_order: bool, optional
920 ignore_axis_order: bool, default=False
921921 If True, it will compare the CRS class and ignore the axis order.
922 Default is False.
923922
924923 Returns
925924 -------
10111010 Returns
10121011 -------
10131012 str:
1014 The name of the CRS (from `proj_get_name <https://proj.org/
1015 development/reference/functions.html#_CPPv313proj_get_namePK2PJ>`_).
1013 The name of the CRS (from :cpp:func:`proj_get_name`).
10161014 """
10171015 return self._crs.name
10181016
11501148
11511149 Parameters
11521150 ----------
1153 version: pyproj.enums.WktVersion
1151 version: pyproj.enums.WktVersion, optional
11541152 The version of the WKT output.
11551153 Default is :attr:`pyproj.enums.WktVersion.WKT2_2019`.
1156 pretty: bool
1157 If True, it will set the output to be a multiline string. Defaults to False.
1154 pretty: bool, default=False
1155 If True, it will set the output to be a multiline string.
11581156
11591157 Returns
11601158 -------
11701168
11711169 Parameters
11721170 ----------
1173 pretty: bool
1174 If True, it will set the output to be a multiline string. Defaults to False.
1175 indentation: int
1176 If pretty is True, it will set the width of the indentation. Default is 2.
1171 pretty: bool, default=False
1172 If True, it will set the output to be a multiline string.
1173 indentation: int, default=2
1174 If pretty is True, it will set the width of the indentation.
11771175
11781176 Returns
11791177 -------
12391237
12401238 Parameters
12411239 ----------
1242 min_confidence: int, optional
1243 A value between 0-100 where 100 is the most confident. Default is 70.
1240 min_confidence: int, default=70
1241 A value between 0-100 where 100 is the most confident.
12441242 :ref:`min_confidence`
12451243
12461244
12801278 ----------
12811279 auth_name: str, optional
12821280 The name of the authority to filter by.
1283 min_confidence: int, optional
1284 A value between 0-100 where 100 is the most confident. Default is 70.
1281 min_confidence: int, default=70
1282 A value between 0-100 where 100 is the most confident.
12851283 :ref:`min_confidence`
12861284
12871285 Returns
14961494 """
14971495 Parameters
14981496 ----------
1499 name: str, optional
1500 Name of the CRS. Default is undefined.
1501 datum: Any, optional
1497 name: str, default="undefined"
1498 Name of the CRS.
1499 datum: Any, default="urn:ogc:def:datum:EPSG::6326"
15021500 Anything accepted by :meth:`pyproj.crs.Datum.from_user_input` or
15031501 a :class:`pyproj.crs.datum.CustomDatum`.
15041502 ellipsoidal_cs: Any, optional
15451543 Input to create an Ellipsoidal Coordinate System.
15461544 Anything accepted by :meth:`pyproj.crs.CoordinateSystem.from_user_input`
15471545 or an Ellipsoidal Coordinate System created from :ref:`coordinate_system`.
1548 name: str, optional
1549 Name of the CRS. Default is undefined.
1546 name: str, default="undefined"
1547 Name of the CRS.
15501548 """
15511549 derived_geographic_crs_json = {
15521550 "$schema": "https://proj.org/schemas/v0.2/projjson.schema.json",
2222 """
2323 Parameters
2424 ----------
25 name: str, optional
26 Name of the datum. Default is 'undefined'.
27 ellipsoid: Any, optional
25 name: str, default="undefined"
26 Name of the datum.
27 ellipsoid: Any, default="WGS 84"
2828 Anything accepted by :meth:`pyproj.crs.Ellipsoid.from_user_input`
2929 or a :class:`pyproj.crs.datum.CustomEllipsoid`.
30 prime_meridian: Any, optional
30 prime_meridian: Any, default="Greenwich"
3131 Anything accepted by :meth:`pyproj.crs.PrimeMeridian.from_user_input`.
3232 """
3333 datum_json = {
6060 """
6161 Parameters
6262 ----------
63 name: str, optional
64 Name of the ellipsoid. Default is 'undefined'.
63 name: str, default="undefined"
64 Name of the ellipsoid.
6565 semi_major_axis: float, optional
6666 The semi major axis in meters. Required if missing radius.
6767 inverse_flattening: float, optional
7878 The name of the authority.
7979 pj_type: pyproj.enums.PJType
8080 The type of object to get the authorities.
81 allow_deprecated: bool, optional
81 allow_deprecated: bool, default=False
8282 Allow a deprecated code in the return.
8383
8484 Returns
162162
163163 Parameters
164164 ----------
165 auth_name: Optional[str]
165 auth_name: Optional[str], optional
166166 The name of the authority. Default is all authorities.
167 pj_types: Union[pyproj.enums.PJType, List[pyproj.enums.PJType], None]
167 pj_types: Union[pyproj.enums.PJType, List[pyproj.enums.PJType], None], optional
168168 The type(s) of CRS to get the information (i.e. the types with CRS in the name).
169 Default is all of them (i.e. PJType.CRS).
170 area_of_interest: Optional[AreaOfInterest]
169 If None is provided, it will use all of types (i.e. PJType.CRS).
170 area_of_interest: Optional[AreaOfInterest], optional
171171 Filter returned CRS by the area of interest. Default method is intersection.
172 contains: Optional[bool]
172 contains: bool, default=False
173173 Only works if the area of interest is passed in.
174174 If True, then only CRS whose area of use entirely contains the specified
175175 bounding box will be returned. If False, then only CRS whose area of use
176176 intersects the specified bounding box will be returned.
177 allow_deprecated: Optional[bool]
177 allow_deprecated: bool, default=False
178178 Allow a deprecated code in the return.
179179
180180 Returns
272272
273273 Parameters
274274 ----------
275 datum_name: Optional[str]
275 datum_name: Optional[str], optional
276276 The name of the datum in the CRS name ('NAD27', 'NAD83', 'WGS 84', ...).
277 area_of_interest: Optional[AreaOfInterest]
277 area_of_interest: Optional[AreaOfInterest], optional
278278 Filter returned CRS by the area of interest. Default method is intersection.
279 contains: Optional[bool]
279 contains: bool, default=False
280280 Only works if the area of interest is passed in.
281281 If True, then only CRS whose area of use entirely contains the specified
282282 bounding box will be returned. If False, then only CRS whose area of use
351351 category: str, optional
352352 Category of the unit: one of "linear", "linear_per_time", "angular",
353353 "angular_per_time", "scale", "scale_per_time" or "time". Default is all.
354 allow_deprecated: bool, optional
355 Whether or not to allow deprecated units. Default is False.
354 allow_deprecated: bool, default=False
355 Whether or not to allow deprecated units.
356356
357357 Returns
358358 -------
203203 dist: array, :class:`numpy.ndarray`, list, tuple, or scalar
204204 Distance(s) between initial and terminus point(s)
205205 in meters
206 radians: bool, optional
206 radians: bool, default=False
207207 If True, the input data is assumed to be in radians.
208 Otherwise, the data is assumed to be in degrees.
208209
209210 Returns
210211 -------
246247 Longitude(s) of terminus point(s)
247248 lats2: array, :class:`numpy.ndarray`, list, tuple, or scalar
248249 Latitude(s) of terminus point(s)
249 radians: bool, optional
250 radians: bool, default=False
250251 If True, the input data is assumed to be in radians.
252 Otherwise, the data is assumed to be in degrees.
251253
252254 Returns
253255 -------
349351 npts: int
350352 Number of points to be returned
351353 (including initial and/or terminus points, if required)
352 radians: bool, optional
354 radians: bool, default=False
353355 If True, the input data is assumed to be in radians.
354 initial_idx: int, optional
356 Otherwise, the data is assumed to be in degrees.
357 initial_idx: int, default=1
355358 if initial_idx==0 then the initial point would be included in the output
356359 (as the first point)
357 terminus_idx: int, optional
360 terminus_idx: int, default=1
358361 if terminus_idx==0 then the terminus point would be included in the output
359362 (as the last point)
360363 Returns
475478 Longitude of the terminus point
476479 lat2: float
477480 Latitude of the terminus point
478 npts: int, optional
481 npts: int, default=0
479482 Number of points to be returned
480 npts == 0 iff del_s != 0
481 del_s: float, optional
483 npts == 0 if del_s != 0
484 del_s: float, default=0
482485 delimiter distance between two successive points
483 del_s == 0 iff npts != 0
484 radians: bool, optional
486 del_s == 0 if npts != 0
487 radians: bool, default=False
485488 If True, the input data is assumed to be in radians.
486 initial_idx: int, optional
489 Otherwise, the data is assumed to be in degrees.
490 initial_idx: int, default=1
487491 if initial_idx==0 then the initial point would be included in the output
488492 (as the first point)
489 terminus_idx: int, optional
493 terminus_idx: int, default=1
490494 if terminus_idx==0 then the terminus point would be included in the output
491495 (as the last point)
492 flags: GeodIntermediateFlag, optional
493 1st: round/ceil/trunc (see GeodIntermediateFlag.NPTS_*)
494 2nd: update del_s to the new npts or not (see GeodIntermediateFlag.DEL_S_*)
495 3rd: iff out_azis=None, indicates if to save or discard the azimuths
496 (see GeodIntermediateFlag.AZIS_*)
497 default - round npts, update del_s accordingly, discard azis
496 flags: GeodIntermediateFlag, default=GeodIntermediateFlag.DEFAULT
497 * 1st - round/ceil/trunc (see ``GeodIntermediateFlag.NPTS_*``)
498 * 2nd - update del_s to the new npts or not
499 (see ``GeodIntermediateFlag.DEL_S_*``)
500 * 3rd - if out_azis=None, indicates if to save or discard the azimuths
501 (see ``GeodIntermediateFlag.AZIS_*``)
502 * default - round npts, update del_s accordingly, discard azis
498503 out_lons: array, :class:`numpy.ndarray`, optional
499504 Longitude(s) of the intermediate point(s)
500505 If None then buffers would be allocated internnaly
508513
509514 Returns
510515 -------
511 GeodIntermediateReturn
516 GeodIntermediateReturn:
512517 number of points, distance and output arrays (GeodIntermediateReturn docs)
513518 """
514519 return super()._inv_or_fwd_intermediate(
611616 (including initial and/or terminus points, if required)
612617 del_s: float
613618 delimiter distance between two successive points
614 radians: bool, optional
619 radians: bool, default=False
615620 If True, the input data is assumed to be in radians.
616 initial_idx: int, optional
621 Otherwise, the data is assumed to be in degrees.
622 initial_idx: int, default=1
617623 if initial_idx==0 then the initial point would be included in the output
618624 (as the first point)
619 terminus_idx: int, optional
625 terminus_idx: int, default=1
620626 if terminus_idx==0 then the terminus point would be included in the output
621627 (as the last point)
622 flags: GeodIntermediateFlag, optional
623 3rd: iff out_azis=None, indicates if to save or discard the azimuths
624 (see GeodIntermediateFlag.AZIS_*)
625 default - discard azis
628 flags: GeodIntermediateFlag, default=GeodIntermediateFlag.DEFAULT
629 * 1st - round/ceil/trunc (see ``GeodIntermediateFlag.NPTS_*``)
630 * 2nd - update del_s to the new npts or not
631 (see ``GeodIntermediateFlag.DEL_S_*``)
632 * 3rd - if out_azis=None, indicates if to save or discard the azimuths
633 (see ``GeodIntermediateFlag.AZIS_*``)
634 * default - round npts, update del_s accordingly, discard azis
626635 out_lons: array, :class:`numpy.ndarray`, optional
627636 Longitude(s) of the intermediate point(s)
628637 If None then buffers would be allocated internnaly
636645
637646 Returns
638647 -------
639 GeodIntermediateReturn
648 GeodIntermediateReturn:
640649 number of points, distance and output arrays (GeodIntermediateReturn docs)
641650 """
642651 return super()._inv_or_fwd_intermediate(
678687 The longitude points along a line.
679688 lats: array, :class:`numpy.ndarray`, list, tuple, or scalar
680689 The latitude points along a line.
681 radians: bool, optional
690 radians: bool, default=False
682691 If True, the input data is assumed to be in radians.
692 Otherwise, the data is assumed to be in degrees.
683693
684694 Returns
685695 -------
712722 The longitude points along a line.
713723 lats: array, :class:`numpy.ndarray`, list, tuple, or scalar
714724 The latitude points along a line.
715 radians: bool, optional
725 radians: bool, default=False
716726 If True, the input data is assumed to be in radians.
727 Otherwise, the data is assumed to be in degrees.
717728
718729 Returns
719730 -------
764775 An array of longitude values.
765776 lats: array, :class:`numpy.ndarray`, list, tuple, or scalar
766777 An array of latitude values.
767 radians: bool, optional
778 radians: bool, default=False
768779 If True, the input data is assumed to be in radians.
780 Otherwise, the data is assumed to be in degrees.
769781
770782 Returns
771783 -------
800812 ----------
801813 geometry: :class:`shapely.geometry.BaseGeometry`
802814 The geometry to calculate the length from.
803 radians: bool, optional
815 radians: bool, default=False
804816 If True, the input data is assumed to be in radians.
817 Otherwise, the data is assumed to be in degrees.
805818
806819 Returns
807820 -------
870883 ----------
871884 geometry: :class:`shapely.geometry.BaseGeometry`
872885 The geometry to calculate the area and perimeter from.
873 radians: bool, optional
874 If True, the input data is assumed to be in radians. Default is degrees.
886 radians: bool, default=False
887 If True, the input data is assumed to be in radians.
888 Otherwise, the data is assumed to be in degrees.
875889
876890 Returns
877891 -------
286286 void proj_list_destroy(PJ_OBJ_LIST *result)
287287 void proj_int_list_destroy(int* list)
288288 void proj_context_use_proj4_init_rules(PJ_CONTEXT *ctx, int enable)
289 void proj_context_set_autoclose_database(PJ_CONTEXT *ctx,
290 int autoclose)
291289 ctypedef enum PJ_GUESSED_WKT_DIALECT:
292290 PJ_GUESSED_WKT2_2018
293291 PJ_GUESSED_WKT2_2015
66 control parameter key/value pairs. The key/value pairs can
77 either be passed in a dictionary, or as keyword arguments,
88 or as a PROJ string (compatible with the proj command). See
9 https://proj.org/operations/projections/index.html for examples of
9 :ref:`projections` for examples of
1010 key/value pairs defining different map projections.
1111
1212 Calling a Proj class instance with the arguments lon, lat will
5151 control parameter key/value pairs. The key/value pairs can
5252 either be passed in a dictionary, or as keyword arguments,
5353 or as a PROJ string (compatible with the proj command). See
54 https://proj.org/operations/projections/index.html for examples of
54 :ref:`projections` for examples of
5555 key/value pairs defining different map projections.
5656
5757 Parameters
157157 Input longitude coordinate(s).
158158 latitude: scalar or array (numpy or python)
159159 Input latitude coordinate(s).
160 inverse: boolean, optional
160 inverse: bool, default=False
161161 If inverse is True the inverse transformation from x/y to
162 lon/lat is performed. Default is False.
163 radians: boolean, optional
162 lon/lat is performed.
163 radians: bool, default=False
164164 If True, will expect input data to be in radians and will return radians
165 if the projection is geographic. Default is False (degrees).
165 if the projection is geographic. Otherwise, it uses degrees.
166166 This does not work with pyproj 2 and is ignored. It will be enabled again
167167 in pyproj 3.
168 errcheck: boolean, optional
169 If True an exception is raised if the errors are found in the process.
170 By default errcheck=False and ``inf`` is returned.
168 errcheck: bool, default=False
169 If True, an exception is raised if the errors are found in the process.
170 If False, ``inf`` is returned for errors.
171171
172172 Returns
173173 -------
209209 Input longitude coordinate(s).
210210 latitude: scalar or array (numpy or python)
211211 Input latitude coordinate(s).
212 radians: boolean, optional
213 If True, will expect input data to be in radians.
214 Default is False (degrees).
215 errcheck: boolean, optional
216 If True an exception is raised if the errors are found in the process.
217 By default errcheck=False and ``inf`` is returned.
212 radians: bool, default=False
213 If True, will expect input data to be in radians and will return radians
214 if the projection is geographic. Otherwise, it uses degrees.
215 errcheck: bool, default=False
216 If True, an exception is raised if the errors are found in the process.
217 If False, ``inf`` is returned on error.
218218
219219 Returns
220220 -------
226226 area_of_use: str, optional
227227 filename: str, optional
228228 bbox: BBox, optional
229 spatial_test: str, optional
230 Can be "contains" or "intersects". Defaults to "intersects".
231 include_world_coverage: bool, optional
232 Defaults to True.
233 include_already_downloaded: bool, optional
229 spatial_test: str, default="intersects"
230 Can be "contains" or "intersects".
231 include_world_coverage: bool, default=True
232 If True, it will include grids with a global extent.
233 include_already_downloaded: bool, default=False
234234 If True, it will list grids regardless of if they are downloaded.
235 Defaults to False.
236 target_directory: Union[str, Path], optional
235 target_directory: Union[str, Path, None], optional
237236 The directory to download the geojson file to.
238237 Default is the user writable directory.
239238
162162 Projection of input data.
163163 crs_to: pyproj.crs.CRS or input used to create one
164164 Projection of output data.
165 skip_equivalent: bool, optional
165 skip_equivalent: bool, default=False
166166 DEPRECATED: If true, will skip the transformation operation
167 if input and output projections are equivalent. Default is false.
168 always_xy: bool, optional
167 if input and output projections are equivalent.
168 always_xy: bool, default=False
169169 If true, the transform method will accept as input and return as output
170170 coordinates using the traditional GIS order, that is longitude, latitude
171171 for geographic CRS and easting, northing for most projected CRS.
172 Default is false.
173172 area_of_interest: :class:`pyproj.transformer.AreaOfInterest`, optional
174173 The area of interest to help order the transformations based on the
175174 best operation for the area.
237236 directory: str or Path, optional
238237 The directory to download the grids to.
239238 Defaults to :func:`pyproj.datadir.get_user_data_dir`
240 open_license: bool, optional
239 open_license: bool, default=True
241240 If True, will only download grids with an open license.
242 Defaults to False.
243 verbose: bool, optional
241 verbose: bool, default=False
244242 If True, will print information about grids downloaded.
245 Default is False.
246243 """
247244 if directory is None:
248245 directory = get_user_data_dir(True)
437434 Projection of input data.
438435 proj_to: :obj:`pyproj.Proj` or input used to create one
439436 Projection of output data.
440 skip_equivalent: bool, optional
437 skip_equivalent: bool, default=False
441438 DEPRECATED: If true, will skip the transformation operation
442 if input and output projections are equivalent. Default is false.
443 always_xy: bool, optional
439 if input and output projections are equivalent.
440 always_xy: bool, default=False
444441 If true, the transform method will accept as input and return as output
445442 coordinates using the traditional GIS order, that is longitude, latitude
446443 for geographic CRS and easting, northing for most projected CRS.
447 Default is false.
448444 area_of_interest: :class:`pyproj.transformer.AreaOfInterest`, optional
449445 The area of interest to help select the transformation.
450446
493489 Projection of input data.
494490 crs_to: pyproj.crs.CRS or input used to create one
495491 Projection of output data.
496 skip_equivalent: bool, optional
492 skip_equivalent: bool, default=False
497493 DEPRECATED: If true, will skip the transformation operation
498 if input and output projections are equivalent. Default is false.
499 always_xy: bool, optional
494 if input and output projections are equivalent.
495 always_xy: bool, default=False
500496 If true, the transform method will accept as input and return as output
501497 coordinates using the traditional GIS order, that is longitude, latitude
502498 for geographic CRS and easting, northing for most projected CRS.
503 Default is false.
504499 area_of_interest: :class:`pyproj.transformer.AreaOfInterest`, optional
505500 The area of interest to help select the transformation.
506501 authority: str, optional
548543 def from_pipeline(proj_pipeline: str) -> "Transformer":
549544 """Make a Transformer from a PROJ pipeline string.
550545
551 https://proj.org/operations/pipeline.html
546 :ref:`pipeline`
552547
553548 .. versionadded:: 3.1.0 AUTH:CODE string suppor (e.g. EPSG:1671)
554549
603598 Input z coordinate(s).
604599 tt: scalar or array (numpy or python), optional
605600 Input time coordinate(s).
606 radians: boolean, optional
601 radians: bool, default=False
607602 If True, will expect input data to be in radians and will return radians
608 if the projection is geographic. Default is False (degrees). Ignored for
609 pipeline transformations with pyproj 2, but will work in pyproj 3.
610 errcheck: boolean, optional
611 If True an exception is raised if the transformation is invalid.
612 By default errcheck=False and an invalid transformation
613 returns ``inf`` and no exception is raised.
603 if the projection is geographic. Otherwise, it uses degrees.
604 Ignored for pipeline transformations with pyproj 2,
605 but will work in pyproj 3.
606 errcheck: bool, default=False
607 If True, an exception is raised if the errors are found in the process.
608 If False, ``inf`` is returned for errors.
614609 direction: pyproj.enums.TransformDirection, optional
615610 The direction of the transform.
616611 Default is :attr:`pyproj.enums.TransformDirection.FORWARD`.
712707 ----------
713708 points: list
714709 List of point tuples.
715 switch: boolean, optional
710 switch: bool, default=False
716711 If True x, y or lon,lat coordinates of points are switched to y, x
717712 or lat, lon. Default is False.
718 time_3rd: boolean, optional
713 time_3rd: bool, default=False
719714 If the input coordinates are 3 dimensional and the 3rd dimension is time.
720 radians: boolean, optional
715 radians: bool, default=False
721716 If True, will expect input data to be in radians and will return radians
722 if the projection is geographic. Default is False (degrees). Ignored for
723 pipeline transformations.
724 errcheck: boolean, optional
725 If True an exception is raised if the transformation is invalid.
726 By default errcheck=False and an invalid transformation
727 returns ``inf`` and no exception is raised.
717 if the projection is geographic. Otherwise, it uses degrees.
718 Ignored for pipeline transformations with pyproj 2,
719 but will work in pyproj 3.
720 errcheck: bool, default=False
721 If True, an exception is raised if the errors are found in the process.
722 If False, ``inf`` is returned for errors.
728723 direction: pyproj.enums.TransformDirection, optional
729724 The direction of the transform.
730725 Default is :attr:`pyproj.enums.TransformDirection.FORWARD`.
844839 Right bounding coordinate in source CRS.
845840 top: float
846841 Top bounding coordinate in source CRS.
847 densify_points: uint, optional
842 densify_points: uint, default=21
848843 Number of points to add to each edge to account for nonlinear edges
849844 produced by the transform process. Large numbers will produce worse
850 performance. Default: 21 (gdal default).
851 radians: boolean, optional
845 performance.
846 radians: bool, default=False
852847 If True, will expect input data to be in radians and will return radians
853 if the projection is geographic. Default is False (degrees). Ignored for
854 pipeline transformations.
855 errcheck: boolean, optional
856 If True an exception is raised if the transformation is invalid.
857 By default errcheck=False and an invalid transformation
858 returns ``inf`` and no exception is raised.
848 if the projection is geographic. Otherwise, it uses degrees.
849 errcheck: bool, default=False
850 If True, an exception is raised if the errors are found in the process.
851 If False, ``inf`` is returned for errors.
859852 direction: pyproj.enums.TransformDirection, optional
860853 The direction of the transform.
861854 Default is :attr:`pyproj.enums.TransformDirection.FORWARD`.
891884 version: pyproj.enums.ProjVersion
892885 The version of the PROJ string output.
893886 Default is :attr:`pyproj.enums.ProjVersion.PROJ_5`.
894 pretty: bool
895 If True, it will set the output to be a multiline string. Defaults to False.
887 pretty: bool, default=False
888 If True, it will set the output to be a multiline string.
896889
897890 Returns
898891 -------
921914
922915 Parameters
923916 ----------
924 version: pyproj.enums.WktVersion
917 version: pyproj.enums.WktVersion, optional
925918 The version of the WKT output.
926919 Default is :attr:`pyproj.enums.WktVersion.WKT2_2019`.
927 pretty: bool
928 If True, it will set the output to be a multiline string. Defaults to False.
920 pretty: bool, default=False
921 If True, it will set the output to be a multiline string.
929922
930923 Returns
931924 -------
942935
943936 Parameters
944937 ----------
945 pretty: bool
946 If True, it will set the output to be a multiline string. Defaults to False.
947 indentation: int
948 If pretty is True, it will set the width of the indentation. Default is 2.
938 pretty: bool, default=False
939 If True, it will set the output to be a multiline string.
940 indentation: int, default=2
941 If pretty is True, it will set the width of the indentation.
949942
950943 Returns
951944 -------
0 Metadata-Version: 2.1
1 Name: pyproj
2 Version: 3.1.1.dev0
3 Summary: Python interface to PROJ (cartographic projections and coordinate transformations library)
4 Home-page: https://github.com/pyproj4/pyproj
5 Author: Jeff Whitaker
6 Author-email: jeffrey.s.whitaker@noaa.gov
7 License: MIT
8 Download-URL: http://python.org/pypi/pyproj
9 Project-URL: Documentation, https://pyproj4.github.io/pyproj/
10 Project-URL: Release Notes, https://pyproj4.github.io/pyproj/stable/history.html
11 Project-URL: Bug Tracker, https://github.com/pyproj4/pyproj/issues
12 Project-URL: Source Code, https://github.com/pyproj4/pyproj
13 Description: # pyproj
14
15 Python interface to [PROJ](http://proj.org) (cartographic projections and coordinate transformations library).
16
17 <p align="center">
18 <a href="https://gitter.im/pyproj4-pyproj/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"><img alt="Join the chat at https://gitter.im/pyproj4-pyproj/community" src="https://badges.gitter.im/pyproj4-pyproj/community.svg"></a>
19 <a href="#contributors"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-42-orange.svg?style=flat-square"></a>
20 <a href="https://ci.appveyor.com/project/jswhit/pyproj"><img alt="Appveyor Build Status" src="https://ci.appveyor.com/api/projects/status/8xkka4s97uwhkc64/branch/master?svg=true"></a>
21 <a href="https://github.com/pyproj4/pyproj/actions?query=workflow%3ATests"><img alt="GitHub Actions Build Status" src="https://github.com/pyproj4/pyproj/workflows/Tests/badge.svg"></a>
22 <a href="https://codecov.io/gh/pyproj4/pyproj"><img alt="Codecov Status" src="https://codecov.io/gh/pyproj4/pyproj/branch/master/graph/badge.svg"></a>
23 <a href="https://badge.fury.io/py/pyproj"><img alt="PyPI" src="https://badge.fury.io/py/pyproj.svg"></a>
24 <a href="https://pepy.tech/project/pyproj"><img alt="Downloads" src="https://pepy.tech/badge/pyproj"></a>
25 <a href="https://anaconda.org/conda-forge/pyproj"><img alt="Anaconda-Server Badge" src="https://anaconda.org/conda-forge/pyproj/badges/version.svg"></a>
26 <a href="https://github.com/python/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
27 <a href="https://github.com/pre-commit/pre-commit"><img alt="pre-commit" src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white"></a>
28 <a href="https://zenodo.org/badge/latestdoi/28607354"><img alt="DOI" src="https://zenodo.org/badge/28607354.svg"></a>
29 </p>
30
31
32 ## Documentation
33
34 - Stable: http://pyproj4.github.io/pyproj/stable/
35 - Latest: https://pyproj4.github.io/pyproj/latest/
36
37 ## Bugs/Questions
38
39 - Report bugs/feature requests: https://github.com/pyproj4/pyproj/issues
40 - Ask questions: https://github.com/pyproj4/pyproj/discussions
41 - Ask developer questions: https://gitter.im/pyproj4-pyproj/community
42 - Ask the GIS community: https://gis.stackexchange.com/questions/tagged/pyproj
43
44 ## Contributors ✨
45
46 Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
47
48 <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
49 <!-- prettier-ignore-start -->
50 <!-- markdownlint-disable -->
51 <table>
52 <tr>
53 <td align="center"><a href="https://github.com/jswhit"><img src="https://avatars2.githubusercontent.com/u/579593?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jeff Whitaker</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=jswhit" title="Documentation">📖</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jswhit" title="Tests">⚠️</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jswhit" title="Code">💻</a> <a href="#example-jswhit" title="Examples">💡</a> <a href="#ideas-jswhit" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/pyproj4/pyproj/pulls?q=is%3Apr+reviewed-by%3Ajswhit" title="Reviewed Pull Requests">👀</a> <a href="#question-jswhit" title="Answering Questions">💬</a> <a href="#maintenance-jswhit" title="Maintenance">🚧</a> <a href="#infra-jswhit" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ajswhit" title="Bug reports">🐛</a></td>
54 <td align="center"><a href="https://github.com/snowman2"><img src="https://avatars3.githubusercontent.com/u/8699967?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alan D. Snow</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=snowman2" title="Documentation">📖</a> <a href="https://github.com/pyproj4/pyproj/commits?author=snowman2" title="Tests">⚠️</a> <a href="https://github.com/pyproj4/pyproj/commits?author=snowman2" title="Code">💻</a> <a href="#example-snowman2" title="Examples">💡</a> <a href="#maintenance-snowman2" title="Maintenance">🚧</a> <a href="#infra-snowman2" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#ideas-snowman2" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/pyproj4/pyproj/pulls?q=is%3Apr+reviewed-by%3Asnowman2" title="Reviewed Pull Requests">👀</a> <a href="#question-snowman2" title="Answering Questions">💬</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Asnowman2" title="Bug reports">🐛</a></td>
55 <td align="center"><a href="https://github.com/micahcochran"><img src="https://avatars0.githubusercontent.com/u/7433104?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Micah Cochran</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=micahcochran" title="Documentation">📖</a> <a href="https://github.com/pyproj4/pyproj/commits?author=micahcochran" title="Tests">⚠️</a> <a href="https://github.com/pyproj4/pyproj/commits?author=micahcochran" title="Code">💻</a> <a href="#maintenance-micahcochran" title="Maintenance">🚧</a> <a href="#infra-micahcochran" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/pyproj4/pyproj/pulls?q=is%3Apr+reviewed-by%3Amicahcochran" title="Reviewed Pull Requests">👀</a> <a href="#question-micahcochran" title="Answering Questions">💬</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Amicahcochran" title="Bug reports">🐛</a></td>
56 <td align="center"><a href="https://jorisvandenbossche.github.io/"><img src="https://avatars2.githubusercontent.com/u/1020496?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Joris Van den Bossche</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=jorisvandenbossche" title="Documentation">📖</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jorisvandenbossche" title="Code">💻</a> <a href="#ideas-jorisvandenbossche" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/pyproj4/pyproj/pulls?q=is%3Apr+reviewed-by%3Ajorisvandenbossche" title="Reviewed Pull Requests">👀</a> <a href="#question-jorisvandenbossche" title="Answering Questions">💬</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ajorisvandenbossche" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jorisvandenbossche" title="Tests">⚠️</a></td>
57 <td align="center"><a href="https://github.com/cjmayo"><img src="https://avatars1.githubusercontent.com/u/921089?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chris Mayo</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=cjmayo" title="Tests">⚠️</a></td>
58 <td align="center"><a href="https://www.petrel.org"><img src="https://avatars1.githubusercontent.com/u/2298266?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Charles Karney</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=cffk" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=cffk" title="Tests">⚠️</a></td>
59 <td align="center"><a href="http://www.justaprogrammer.net/profile/justin"><img src="https://avatars3.githubusercontent.com/u/146930?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Justin Dearing</b></sub></a><br /><a href="#infra-zippy1981" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
60 </tr>
61 <tr>
62 <td align="center"><a href="https://github.com/jdkloe"><img src="https://avatars3.githubusercontent.com/u/1906112?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jos de Kloe</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=jdkloe" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jdkloe" title="Tests">⚠️</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ajdkloe" title="Bug reports">🐛</a></td>
63 <td align="center"><a href="https://github.com/georgeouzou"><img src="https://avatars3.githubusercontent.com/u/16732042?v=4?s=100" width="100px;" alt=""/><br /><sub><b>George Ouzounoudis</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=georgeouzou" title="Code">💻</a> <a href="#ideas-georgeouzou" title="Ideas, Planning, & Feedback">🤔</a></td>
64 <td align="center"><a href="https://github.com/djhoese"><img src="https://avatars3.githubusercontent.com/u/1828519?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David Hoese</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/pulls?q=is%3Apr+reviewed-by%3Adjhoese" title="Reviewed Pull Requests">👀</a> <a href="#ideas-djhoese" title="Ideas, Planning, & Feedback">🤔</a> <a href="#platform-djhoese" title="Packaging/porting to new platform">📦</a> <a href="https://github.com/pyproj4/pyproj/commits?author=djhoese" title="Documentation">📖</a> <a href="https://github.com/pyproj4/pyproj/commits?author=djhoese" title="Tests">⚠️</a> <a href="https://github.com/pyproj4/pyproj/commits?author=djhoese" title="Code">💻</a></td>
65 <td align="center"><a href="http://mitkin.github.io"><img src="https://avatars3.githubusercontent.com/u/3927849?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mikhail Itkin</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=mitkin" title="Code">💻</a></td>
66 <td align="center"><a href="http://dopplershift.github.io"><img src="https://avatars2.githubusercontent.com/u/221526?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ryan May</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=dopplershift" title="Code">💻</a></td>
67 <td align="center"><a href="https://github.com/artttt"><img src="https://avatars3.githubusercontent.com/u/4626281?v=4?s=100" width="100px;" alt=""/><br /><sub><b>artttt</b></sub></a><br /><a href="#ideas-artttt" title="Ideas, Planning, & Feedback">🤔</a></td>
68 <td align="center"><a href="http://ocefpaf.github.io/python4oceanographers"><img src="https://avatars1.githubusercontent.com/u/950575?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Filipe</b></sub></a><br /><a href="#infra-ocefpaf" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/pyproj4/pyproj/commits?author=ocefpaf" title="Code">💻</a> <a href="#platform-ocefpaf" title="Packaging/porting to new platform">📦</a></td>
69 </tr>
70 <tr>
71 <td align="center"><a href="https://github.com/heitorPB"><img src="https://avatars2.githubusercontent.com/u/13461702?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Heitor</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=heitorPB" title="Documentation">📖</a></td>
72 <td align="center"><a href="https://github.com/sebastic"><img src="https://avatars3.githubusercontent.com/u/4605306?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Bas Couwenberg</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=sebastic" title="Code">💻</a> <a href="#platform-sebastic" title="Packaging/porting to new platform">📦</a> <a href="https://github.com/pyproj4/pyproj/commits?author=sebastic" title="Tests">⚠️</a></td>
73 <td align="center"><a href="https://github.com/nickeubank"><img src="https://avatars0.githubusercontent.com/u/9683693?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nick Eubank</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=nickeubank" title="Code">💻</a></td>
74 <td align="center"><a href="https://www.math.uwaterloo.ca/~mdunphy/"><img src="https://avatars3.githubusercontent.com/u/9088426?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Dunphy</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=mdunphy" title="Documentation">📖</a></td>
75 <td align="center"><a href="http://matthew.dynevor.org"><img src="https://avatars2.githubusercontent.com/u/67612?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matthew Brett</b></sub></a><br /><a href="#infra-matthew-brett" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-matthew-brett" title="Packaging/porting to new platform">📦</a></td>
76 <td align="center"><a href="https://naboa.de"><img src="https://avatars1.githubusercontent.com/u/10531844?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jakob de Maeyer </b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=jdemaeyer" title="Code">💻</a></td>
77 <td align="center"><a href="https://gitter.im"><img src="https://avatars2.githubusercontent.com/u/8518239?v=4?s=100" width="100px;" alt=""/><br /><sub><b>The Gitter Badger</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=gitter-badger" title="Documentation">📖</a></td>
78 </tr>
79 <tr>
80 <td align="center"><a href="http://lizards.opensuse.org/author/bmwiedemann/"><img src="https://avatars3.githubusercontent.com/u/637990?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Bernhard M. Wiedemann</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=bmwiedemann" title="Code">💻</a></td>
81 <td align="center"><a href="https://github.com/ReallyNiceGuy"><img src="https://avatars0.githubusercontent.com/u/6545730?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Marco Aurélio da Costa</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=ReallyNiceGuy" title="Code">💻</a></td>
82 <td align="center"><a href="https://github.com/ChrisBarker-NOAA"><img src="https://avatars2.githubusercontent.com/u/916576?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christopher H. Barker</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=ChrisBarker-NOAA" title="Code">💻</a></td>
83 <td align="center"><a href="https://evers.dev/"><img src="https://avatars3.githubusercontent.com/u/13132571?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kristian Evers</b></sub></a><br /><a href="#question-kbevers" title="Answering Questions">💬</a> <a href="#ideas-kbevers" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/pyproj4/pyproj/commits?author=kbevers" title="Documentation">📖</a></td>
84 <td align="center"><a href="http://www.spatialys.com/en/about/"><img src="https://avatars2.githubusercontent.com/u/1192433?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Even Rouault</b></sub></a><br /><a href="#question-rouault" title="Answering Questions">💬</a></td>
85 <td align="center"><a href="https://github.com/cgohlke"><img src="https://avatars3.githubusercontent.com/u/483428?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christoph Gohlke</b></sub></a><br /><a href="#platform-cgohlke" title="Packaging/porting to new platform">📦</a> <a href="#question-cgohlke" title="Answering Questions">💬</a> <a href="https://github.com/pyproj4/pyproj/issues?q=author%3Acgohlke" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=cgohlke" title="Tests">⚠️</a></td>
86 <td align="center"><a href="https://github.com/chrrrisw"><img src="https://avatars0.githubusercontent.com/u/5555320?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chris Willoughby</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=chrrrisw" title="Code">💻</a></td>
87 </tr>
88 <tr>
89 <td align="center"><a href="https://github.com/glostis"><img src="https://avatars0.githubusercontent.com/u/25295717?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Guillaume Lostis</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=glostis" title="Documentation">📖</a></td>
90 <td align="center"><a href="https://github.com/edpop"><img src="https://avatars3.githubusercontent.com/u/13479292?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Eduard Popov</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=edpop" title="Documentation">📖</a></td>
91 <td align="center"><a href="http://www.personal.psu.edu/jar339"><img src="https://avatars2.githubusercontent.com/u/7864460?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Joe Ranalli</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ajranalli" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jranalli" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jranalli" title="Tests">⚠️</a></td>
92 <td align="center"><a href="https://github.com/gberardinelli"><img src="https://avatars0.githubusercontent.com/u/13799588?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Greg Berardinelli</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/issues?q=author%3Agberardinelli" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=gberardinelli" title="Code">💻</a> <a href="#ideas-gberardinelli" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/pyproj4/pyproj/commits?author=gberardinelli" title="Tests">⚠️</a></td>
93 <td align="center"><a href="https://github.com/mraspaud"><img src="https://avatars1.githubusercontent.com/u/167802?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Martin Raspaud</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/issues?q=author%3Amraspaud" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=mraspaud" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=mraspaud" title="Tests">⚠️</a> <a href="#ideas-mraspaud" title="Ideas, Planning, & Feedback">🤔</a></td>
94 <td align="center"><a href="https://sites.google.com/site/mwtoews/"><img src="https://avatars1.githubusercontent.com/u/895458?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mike Taves</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=mwtoews" title="Tests">⚠️</a></td>
95 <td align="center"><a href="http://davidhaberthür.ch"><img src="https://avatars2.githubusercontent.com/u/1651235?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David Haberthür</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=habi" title="Documentation">📖</a></td>
96 </tr>
97 <tr>
98 <td align="center"><a href="https://github.com/mmodenesi"><img src="https://avatars2.githubusercontent.com/u/5569789?v=4?s=100" width="100px;" alt=""/><br /><sub><b>mmodenesi</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ammodenesi" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=mmodenesi" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=mmodenesi" title="Tests">⚠️</a></td>
99 <td align="center"><a href="https://www.indigoag.com/"><img src="https://avatars0.githubusercontent.com/u/48448372?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jacob-indigo</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/issues?q=author%3Ajacob-indigo" title="Bug reports">🐛</a> <a href="https://github.com/pyproj4/pyproj/commits?author=jacob-indigo" title="Code">💻</a></td>
100 <td align="center"><a href="https://rahulporuri.github.io"><img src="https://avatars0.githubusercontent.com/u/1926457?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Poruri Sai Rahul</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=rahulporuri" title="Tests">⚠️</a></td>
101 <td align="center"><a href="https://medium.com/@underchemist"><img src="https://avatars1.githubusercontent.com/u/5283998?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yann-Sebastien Tremblay-Johnston</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=underchemist" title="Documentation">📖</a></td>
102 <td align="center"><a href="https://github.com/odidev"><img src="https://avatars2.githubusercontent.com/u/40816837?v=4?s=100" width="100px;" alt=""/><br /><sub><b>odidev</b></sub></a><br /><a href="#platform-odidev" title="Packaging/porting to new platform">📦</a></td>
103 <td align="center"><a href="https://github.com/idanmiara"><img src="https://avatars.githubusercontent.com/u/26349741?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Idan Miara</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=idanmiara" title="Code">💻</a> <a href="https://github.com/pyproj4/pyproj/commits?author=idanmiara" title="Documentation">📖</a> <a href="#example-idanmiara" title="Examples">💡</a> <a href="https://github.com/pyproj4/pyproj/commits?author=idanmiara" title="Tests">⚠️</a></td>
104 <td align="center"><a href="https://github.com/direvus"><img src="https://avatars.githubusercontent.com/u/312229?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brendan Jurd</b></sub></a><br /><a href="https://github.com/pyproj4/pyproj/commits?author=direvus" title="Documentation">📖</a></td>
105 </tr>
106 </table>
107
108 <!-- markdownlint-restore -->
109 <!-- prettier-ignore-end -->
110
111 <!-- ALL-CONTRIBUTORS-LIST:END -->
112
113 This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
114
115 Keywords: GIS,map,geospatial,coordinate-systems,coordinate-transformation,cartographic-projection,geodesic
116 Platform: any
117 Classifier: Development Status :: 4 - Beta
118 Classifier: Intended Audience :: Science/Research
119 Classifier: License :: OSI Approved :: MIT License
120 Classifier: Operating System :: OS Independent
121 Classifier: Programming Language :: Python
122 Classifier: Programming Language :: Python :: 3.7
123 Classifier: Programming Language :: Python :: 3.8
124 Classifier: Programming Language :: Python :: 3.9
125 Classifier: Programming Language :: Python :: 3 :: Only
126 Classifier: Topic :: Scientific/Engineering
127 Classifier: Topic :: Scientific/Engineering :: GIS
128 Classifier: Topic :: Scientific/Engineering :: Mathematics
129 Classifier: Topic :: Software Development :: Libraries :: Python Modules
130 Classifier: Typing :: Typed
131 Requires-Python: >=3.7
132 Description-Content-Type: text/markdown
0 LICENSE
1 MANIFEST.in
2 Makefile
3 README.md
4 pyproject.toml
5 pytest.ini
6 setup.cfg
7 setup.py
8 docs/Makefile
9 docs/advanced_examples.rst
10 docs/build_crs.rst
11 docs/build_crs_cf.rst
12 docs/cli.rst
13 docs/conf.py
14 docs/crs_compatibility.rst
15 docs/examples.rst
16 docs/gotchas.rst
17 docs/history.rst
18 docs/index.rst
19 docs/installation.rst
20 docs/make.bat
21 docs/optimize_transformations.rst
22 docs/past_versions.rst
23 docs/transformation_grids.rst
24 docs/api/aoi.rst
25 docs/api/database.rst
26 docs/api/datadir.rst
27 docs/api/enums.rst
28 docs/api/exceptions.rst
29 docs/api/geod.rst
30 docs/api/global_context.rst
31 docs/api/index.rst
32 docs/api/list.rst
33 docs/api/network.rst
34 docs/api/proj.rst
35 docs/api/show_versions.rst
36 docs/api/sync.rst
37 docs/api/transformer.rst
38 docs/api/crs/coordinate_operation.rst
39 docs/api/crs/coordinate_system.rst
40 docs/api/crs/crs.rst
41 docs/api/crs/datum.rst
42 docs/api/crs/enums.rst
43 docs/api/crs/index.rst
44 pyproj/__init__.py
45 pyproj/__main__.py
46 pyproj/_compat.pxd
47 pyproj/_compat.pyx
48 pyproj/_crs.pxd
49 pyproj/_crs.pyi
50 pyproj/_crs.pyx
51 pyproj/_datadir.pxd
52 pyproj/_datadir.pyi
53 pyproj/_datadir.pyx
54 pyproj/_geod.pxd
55 pyproj/_geod.pyi
56 pyproj/_geod.pyx
57 pyproj/_network.pyi
58 pyproj/_network.pyx
59 pyproj/_show_versions.py
60 pyproj/_sync.pyi
61 pyproj/_sync.pyx
62 pyproj/_transformer.pxd
63 pyproj/_transformer.pyi
64 pyproj/_transformer.pyx
65 pyproj/aoi.py
66 pyproj/base.pxi
67 pyproj/compat.py
68 pyproj/database.pyi
69 pyproj/database.pyx
70 pyproj/datadir.py
71 pyproj/enums.py
72 pyproj/exceptions.py
73 pyproj/geod.py
74 pyproj/list.pyi
75 pyproj/list.pyx
76 pyproj/network.py
77 pyproj/proj.pxi
78 pyproj/proj.py
79 pyproj/py.typed
80 pyproj/sync.py
81 pyproj/transformer.py
82 pyproj/utils.py
83 pyproj.egg-info/PKG-INFO
84 pyproj.egg-info/SOURCES.txt
85 pyproj.egg-info/dependency_links.txt
86 pyproj.egg-info/entry_points.txt
87 pyproj.egg-info/not-zip-safe
88 pyproj.egg-info/requires.txt
89 pyproj.egg-info/top_level.txt
90 pyproj/crs/__init__.py
91 pyproj/crs/_cf1x8.py
92 pyproj/crs/coordinate_operation.py
93 pyproj/crs/coordinate_system.py
94 pyproj/crs/crs.py
95 pyproj/crs/datum.py
96 pyproj/crs/enums.py
97 test/__init__.py
98 test/conftest.py
99 test/sample.out
100 test/test_aoi.py
101 test/test_awips221.py
102 test/test_cli.py
103 test/test_database.py
104 test/test_datadir.py
105 test/test_datum.py
106 test/test_datum_shift.py
107 test/test_doctest_wrapper.py
108 test/test_exception_logging.py
109 test/test_geod.py
110 test/test_list.py
111 test/test_network.py
112 test/test_pickle.py
113 test/test_proj.py
114 test/test_show_versions.py
115 test/test_sync.py
116 test/test_transform.py
117 test/test_transformer.py
118 test/test_utils.py
119 test/crs/test_crs.py
120 test/crs/test_crs_cf.py
121 test/crs/test_crs_coordinate_operation.py
122 test/crs/test_crs_coordinate_system.py
123 test/crs/test_crs_datum.py
124 test/crs/test_crs_json.py
125 test/crs/test_crs_maker.py
0 [console_scripts]
1 pyproj = pyproj.__main__:main
2
+0
-3
requirements-dev.txt less more
0 cython>=0.28.4
1 mypy
2 pre-commit
+0
-3
requirements-docs.txt less more
0 sphinx < 3.5.0
1 sphinx_rtd_theme
2 sphinx-argparse
+0
-6
requirements-test.txt less more
0 pytest>3.6
1 pytest-cov
2 numpy
3 pandas
4 shapely
5 xarray
88 license-file = LICENSE
99 platform = any
1010 keywords = GIS, map, geospatial, coordinate-systems, coordinate-transformation, cartographic-projection, geodesic
11 classifiers =
12 Development Status :: 4 - Beta
13 Intended Audience :: Science/Research
14 License :: OSI Approved :: MIT License
15 Operating System :: OS Independent
16 Programming Language :: Python
17 Programming Language :: Python :: 3.7
18 Programming Language :: Python :: 3.8
19 Programming Language :: Python :: 3.9
20 Programming Language :: Python :: 3 :: Only
21 Topic :: Scientific/Engineering
22 Topic :: Scientific/Engineering :: GIS
23 Topic :: Scientific/Engineering :: Mathematics
24 Topic :: Software Development :: Libraries :: Python Modules
25 Typing :: Typed
11 classifiers =
12 Development Status :: 4 - Beta
13 Intended Audience :: Science/Research
14 License :: OSI Approved :: MIT License
15 Operating System :: OS Independent
16 Programming Language :: Python
17 Programming Language :: Python :: 3.7
18 Programming Language :: Python :: 3.8
19 Programming Language :: Python :: 3.9
20 Programming Language :: Python :: 3 :: Only
21 Topic :: Scientific/Engineering
22 Topic :: Scientific/Engineering :: GIS
23 Topic :: Scientific/Engineering :: Mathematics
24 Topic :: Software Development :: Libraries :: Python Modules
25 Typing :: Typed
2626 url = https://github.com/pyproj4/pyproj
2727 download_url = http://python.org/pypi/pyproj
28 project_urls =
29 Documentation = https://pyproj4.github.io/pyproj/
30 Release Notes = https://pyproj4.github.io/pyproj/stable/history.html
31 Bug Tracker = https://github.com/pyproj4/pyproj/issues
32 Source Code = https://github.com/pyproj4/pyproj
28 project_urls =
29 Documentation = https://pyproj4.github.io/pyproj/
30 Release Notes = https://pyproj4.github.io/pyproj/stable/history.html
31 Bug Tracker = https://github.com/pyproj4/pyproj/issues
32 Source Code = https://github.com/pyproj4/pyproj
3333
3434 [options]
3535 zip_safe = False # https://mypy.readthedocs.io/en/stable/installed_packages.html
3636 packages = pyproj,pyproj.crs
3737 python_requires = >=3.7
38 install_requires =
39 certifi
38 install_requires =
39 certifi
4040
4141 [options.entry_points]
42 console_scripts =
43 pyproj = pyproj.__main__:main
42 console_scripts =
43 pyproj = pyproj.__main__:main
4444
4545 [flake8]
4646 max-line-length = 88
47 ignore =
48 C408 # Unnecessary dict/list/tuple call - rewrite as a literal
49 E203 # whitespace before ':' - doesn't work well with black
50 E225 # missing whitespace around operator - let black worry about that
51 W503 # line break occurred before a binary operator - let black worry about that
47 ignore =
48 C408 # Unnecessary dict/list/tuple call - rewrite as a literal
49 E203 # whitespace before ':' - doesn't work well with black
50 E225 # missing whitespace around operator - let black worry about that
51 W503 # line break occurred before a binary operator - let black worry about that
52
53 [egg_info]
54 tag_build =
55 tag_date = 0
56
192192 This function retrieves the package data
193193 """
194194 # setup package data
195 package_data = {"pyproj": ["*.pyi", "py.typed"]}
195 package_data = {"pyproj": ["*.pyi", "py.typed", "*.pyx", "*.pxd"]}
196196 if os.environ.get("PROJ_WHEEL") is not None and INTERNAL_PROJ_DIR.exists():
197197 package_data["pyproj"].append(
198198 str(BASE_INTERNAL_PROJ_DIR / "share" / "proj" / "*")