New upstream snapshot.
Debian Janitor
2 years ago
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 | [run] | |
1 | plugins = Cython.Coverage | |
2 | ||
3 | [report] | |
4 | # number of decimal points to report for coverage percentage | |
5 | precision = 2 |
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 | 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 | --- | |
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 | --- | |
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 | <!-- 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 | 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 | 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 | 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 | 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 | 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 | # 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 | # 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 | # 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 | ||
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 |
3 | 3 | |
4 | 4 | <p align="center"> |
5 | 5 | <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> | |
7 | 7 | <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> |
8 | 8 | <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> |
9 | 9 | <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> |
88 | 88 | <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> |
89 | 89 | <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> |
90 | 90 | <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> | |
91 | 92 | </tr> |
92 | 93 | </table> |
93 | 94 |
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 | :: 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 | #!/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 | 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 | ||
0 | 6 | python-pyproj (3.1.0-1~exp1) experimental; urgency=medium |
1 | 7 | |
2 | 8 | * New upstream release. |
228 | 228 | |
229 | 229 | To get more debugging information from the internal PROJ code: |
230 | 230 | |
231 | 1. Set the `PROJ_DEBUG <https://proj.org/usage/environmentvars.html#envvar-PROJ_DEBUG>`__ | |
231 | 1. Set the :envvar:`PROJ_DEBUG` | |
232 | 232 | environment variable to the desired level. |
233 | 233 | |
234 | 234 | 2. Activate logging in `pyproj` with the devel `DEBUG`: |
5 | 5 | |
6 | 6 | The `pyproj.Transformer` has the capabilities of performing 2D, 3D, and 4D (time) |
7 | 7 | 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. | |
10 | 9 | This means that it allows translation between any pair of definable coordinate systems, |
11 | 10 | including support for datum transformation. |
12 | 11 |
39 | 39 | "sphinx.ext.intersphinx", |
40 | 40 | "sphinxarg.ext", |
41 | 41 | ] |
42 | ||
43 | intersphinx_mapping = { | |
44 | "proj": ("https://proj.org/", None), | |
45 | } | |
42 | 46 | |
43 | 47 | # Add any paths that contain templates here, relative to this directory. |
44 | 48 | templates_path = ["_templates"] |
22 | 22 | |
23 | 23 | osr_crs = SpatialReference() |
24 | 24 | 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"])) | |
26 | 29 | |
27 | 30 | |
28 | 31 | Converting from `pyproj.crs.CRS` to `osgeo.osr.SpatialReference` |
57 | 60 | If you have `rasterio >= 1.0.14`, then you can pass in the `rasterio.crs.CRS` |
58 | 61 | directly:: |
59 | 62 | |
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) | |
65 | 70 | |
66 | 71 | Otherwise, you should use the `wkt` property:: |
67 | 72 | |
68 | 73 | import rasterio.crs |
69 | 74 | from pyproj.crs import CRS |
70 | 75 | |
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) | |
73 | 79 | |
74 | 80 | Converting from `pyproj.crs.CRS` to `rasterio.crs.CRS` |
75 | 81 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
120 | 126 | import fiona |
121 | 127 | from pyproj.crs import CRS |
122 | 128 | |
123 | with fiona.open(...) as fds: | |
129 | with fiona.Env(OSR_WKT_FORMAT="WKT2_2018"), fiona.open(...) as fds: | |
124 | 130 | proj_crs = CRS.from_wkt(fds.crs_wkt) |
125 | 131 | |
126 | 132 |
6 | 6 | |
7 | 7 | Also see: |
8 | 8 | - :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 | ||
14 | 22 | PROJ strings can be lossy for storing CRS information. |
15 | 23 | If you can avoid it, it is best to not use them. |
16 | 24 | Additionally, PROJ strings will likely not be supported |
0 | 0 | Change Log |
1 | 1 | ========== |
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) | |
2 | 8 | |
3 | 9 | 3.1.0 |
4 | 10 | ----- |
29 | 35 | * Minimum PROJ version 7.2 (issues #599 & #689) |
30 | 36 | * WHL: Removed datumgrids from wheels because not needed with RFC 4 (pull #628) |
31 | 37 | * WHL: Wheels contain PROJ 7.2 |
32 | * ENH: Added :ref:`network` (#675, #691, #695) | |
38 | * ENH: Added :ref:`network_api` (#675, #691, #695) | |
33 | 39 | * ENH: Added ability to use global context (issue #661) |
34 | 40 | * ENH: Added transformation grid sync API/CLI (issue #572) |
35 | 41 | * ENH: Support obects with '__array__' method (pandas.Series, xarray.DataArray, dask.array.Array) (issue #573) |
61 | 61 | |
62 | 62 | PROJ is required when building from source. |
63 | 63 | |
64 | Installation instructions: https://proj.org/install.html | |
64 | :ref:`PROJ Installation Instructions <install>` | |
65 | 65 | |
66 | 66 | You can also download PROJ from: |
67 | 67 |
0 | 0 | Documentation Archive |
1 | 1 | ===================== |
2 | 2 | |
3 | - `3.1.0 <https://pyproj4.github.io/pyproj/3.1.0/>`_ | |
3 | 4 | - `3.0.1 <https://pyproj4.github.io/pyproj/3.0.1/>`_ |
4 | - `3.0.0 <https://pyproj4.github.io/pyproj/3.0.0/>`_ | |
5 | 5 | - `2.6.1 <https://pyproj4.github.io/pyproj/v2.6.1rel/>`_ |
6 | - `2.6.0 <https://pyproj4.github.io/pyproj/v2.6.0rel/>`_ | |
7 | 6 | - `2.5.0 <https://pyproj4.github.io/pyproj/v2.5.0rel/>`_ |
8 | 7 | - `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/>`_ | |
11 | 8 | - `2.3.1 <https://pyproj4.github.io/pyproj/v2.3.1rel/>`_ |
12 | - `2.3.0 <https://pyproj4.github.io/pyproj/v2.3.0rel/>`_ | |
13 | 9 | - `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/>`_ | |
16 | 10 | - `2.1.3 <https://pyproj4.github.io/pyproj/v2.1.3rel/>`_ |
17 | 11 | - `1.9.6 <https://pyproj4.github.io/pyproj/v1.9.6rel/>`_ |
5 | 5 | Transformation grids improve accuracy when you are performing datum transformations. |
6 | 6 | |
7 | 7 | 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. | |
10 | 9 | |
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`. | |
12 | 11 | |
13 | 12 | .. note:: pyproj 3 wheels do not include any transformation grids. |
14 | 13 | |
20 | 19 | ^^^^^^^^ |
21 | 20 | |
22 | 21 | 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>`, | |
24 | 23 | the capability to work with grid files that are not installed on the local machine where PROJ is executed. |
25 | 24 | |
26 | 25 | Available methods for download include: |
51 | 50 | |
52 | 51 | wget --mirror https://cdn.proj.org/ -P ${PROJ_DOWNLOAD_DIR} |
53 | 52 | |
54 | - The `projsync <https://proj.org/apps/projsync.html>`__ command line program. | |
53 | - The :ref:`projsync <projsync>` command line program. | |
55 | 54 | |
56 | 55 | - `pyproj sync <cli.html#sync>`__ command line program (pyproj 3+; useful if you use pyproj wheels). |
57 | 56 | |
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`. | |
59 | 58 | |
60 | 59 | - Download stable from https://download.osgeo.org/proj or latest from https://github.com/OSGeo/PROJ-data |
61 | 60 | |
88 | 87 | - Have a machine that can hold and extra 500 MB - 1 GB of data? Then downloading all grids shouldn't be an issue. |
89 | 88 | |
90 | 89 | - 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`. | |
92 | 91 | |
93 | 92 | - Have a machine with limited space and want to pre-download files? |
94 | 93 |
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 |
27 | 27 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
28 | 28 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
29 | 29 | """ |
30 | __version__ = "3.1.0" | |
30 | __version__ = "3.1.1.dev0" | |
31 | 31 | __all__ = [ |
32 | 32 | "Proj", |
33 | 33 | "Geod", |
202 | 202 | The context to use to create the object. |
203 | 203 | name_string: str |
204 | 204 | Name of object to create. |
205 | auth_name: str, optional | |
205 | auth_name: str | |
206 | 206 | The authority name to refine search. |
207 | 207 | If None, will search all authorities. |
208 | 208 | pj_type: PJ_TYPE |
403 | 403 | |
404 | 404 | Parameters |
405 | 405 | ---------- |
406 | version: pyproj.enums.WktVersion | |
406 | version: pyproj.enums.WktVersion, default=pyproj.enums.WktVersion.WKT2_2019 | |
407 | 407 | 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. | |
411 | 410 | |
412 | 411 | Returns |
413 | 412 | ------- |
423 | 422 | |
424 | 423 | Parameters |
425 | 424 | ---------- |
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. | |
430 | 429 | |
431 | 430 | Returns |
432 | 431 | ------- |
691 | 690 | |
692 | 691 | Parameters |
693 | 692 | ---------- |
694 | rotated_pole: bool, optional | |
693 | rotated_pole: bool, default=False | |
695 | 694 | If True, the geographic coordinates are on a rotated pole grid. |
696 | 695 | This corresponds to the rotated_latitude_longitude grid_mapping_name. |
697 | Default is False. | |
698 | 696 | |
699 | 697 | Returns |
700 | 698 | ------- |
1023 | 1021 | Ellipsoid name. |
1024 | 1022 | auth_name: str, optional |
1025 | 1023 | 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. | |
1027 | 1025 | |
1028 | 1026 | Returns |
1029 | 1027 | ------- |
1271 | 1269 | Prime Meridian name. |
1272 | 1270 | auth_name: str, optional |
1273 | 1271 | 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. | |
1275 | 1273 | |
1276 | 1274 | Returns |
1277 | 1275 | ------- |
1499 | 1497 | auth_name: str |
1500 | 1498 | The authority name to refine search (e.g. 'EPSG'). |
1501 | 1499 | If None, will search all authorities. |
1502 | datum_type: DatumType, optional | |
1500 | datum_type: DatumType | |
1503 | 1501 | The datum type to create. |
1504 | 1502 | |
1505 | 1503 | Returns |
1541 | 1539 | Datum name. |
1542 | 1540 | auth_name: str, optional |
1543 | 1541 | 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. | |
1545 | 1543 | 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. | |
1547 | 1545 | |
1548 | 1546 | Returns |
1549 | 1547 | ------- |
1936 | 1934 | Name of the authority. |
1937 | 1935 | code: str or int |
1938 | 1936 | 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. | |
1941 | 1939 | |
1942 | 1940 | Returns |
1943 | 1941 | ------- |
1968 | 1966 | ---------- |
1969 | 1967 | code: str or int |
1970 | 1968 | 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. | |
1973 | 1971 | |
1974 | 1972 | Returns |
1975 | 1973 | ------- |
2106 | 2104 | Coordinate Operation name. |
2107 | 2105 | auth_name: str, optional |
2108 | 2106 | 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. | |
2110 | 2108 | 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`` | |
2113 | 2111 | |
2114 | 2112 | Returns |
2115 | 2113 | ------- |
2209 | 2207 | |
2210 | 2208 | Parameters |
2211 | 2209 | ---------- |
2212 | version: pyproj.enums.ProjVersion | |
2210 | version: pyproj.enums.ProjVersion, default=pyproj.enums.ProjVersion.PROJ_5 | |
2213 | 2211 | 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. | |
2217 | 2214 | |
2218 | 2215 | Returns |
2219 | 2216 | ------- |
2623 | 2620 | |
2624 | 2621 | Parameters |
2625 | 2622 | ---------- |
2626 | version: pyproj.enums.ProjVersion | |
2623 | version: pyproj.enums.ProjVersion, default=pyproj.enums.ProjVersion.PROJ_4 | |
2627 | 2624 | The version of the PROJ string output. |
2628 | Default is :attr:`pyproj.enums.ProjVersion.PROJ_4`. | |
2629 | 2625 | |
2630 | 2626 | Returns |
2631 | 2627 | ------- |
2664 | 2660 | |
2665 | 2661 | Parameters |
2666 | 2662 | ---------- |
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. | |
2669 | 2665 | :ref:`min_confidence` |
2670 | 2666 | |
2671 | 2667 | |
2711 | 2707 | ---------- |
2712 | 2708 | auth_name: str, optional |
2713 | 2709 | 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. | |
2716 | 2712 | :ref:`min_confidence` |
2717 | 2713 | |
2718 | 2714 | Returns |
2799 | 2795 | Parameters |
2800 | 2796 | ---------- |
2801 | 2797 | 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. | |
2803 | 2799 | |
2804 | 2800 | Returns |
2805 | 2801 | ------- |
2837 | 2833 | The name of the CRS property. |
2838 | 2834 | property_types: tuple(PJ_TYPE) |
2839 | 2835 | 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. | |
2842 | 2838 | |
2843 | 2839 | Returns |
2844 | 2840 | ------- |
2986 | 2982 | ---------- |
2987 | 2983 | other: CRS |
2988 | 2984 | Check if the other object |
2989 | ignore_axis_order: bool, optional | |
2985 | ignore_axis_order: bool, default=False | |
2990 | 2986 | If True, it will compare the CRS class and ignore the axis order. |
2991 | Default is False. | |
2992 | 2987 | |
2993 | 2988 | Returns |
2994 | 2989 | ------- |
17 | 17 | # static user data directory to prevent core dumping |
18 | 18 | # see: https://github.com/pyproj4/pyproj/issues/678 |
19 | 19 | 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) | |
20 | 33 | |
21 | 34 | |
22 | 35 | def set_use_global_context(active=None): |
40 | 53 | If True, it activates the use of the global context. If False, |
41 | 54 | the use of the global context is deactivated. If None, it uses |
42 | 55 | 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. | |
44 | 57 | """ |
45 | 58 | global _USE_GLOBAL_CONTEXT |
46 | 59 | if active is None: |
56 | 69 | Get the PROJ user writable directory for datumgrid files. |
57 | 70 | |
58 | 71 | This is where grids will be downloaded when |
59 | `PROJ network <https://proj.org/usage/network.html>`__ capabilities | |
72 | :ref:`PROJ network <network>` capabilities | |
60 | 73 | 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. | |
62 | 75 | |
63 | 76 | Parameters |
64 | 77 | ---------- |
65 | create: bool, optional | |
78 | create: bool, default=False | |
66 | 79 | If True, it will create the directory if it does not already exist. |
67 | Default is False. | |
68 | 80 | |
69 | 81 | Returns |
70 | 82 | ------- |
0 | # WARNING: cartopy uses pyproj to import PROJ geodesic routines. | |
1 | # Check what cartopy uses before removing any definitions. | |
2 | ||
3 | ||
0 | 4 | cdef extern from "geodesic.h": |
1 | 5 | struct geod_geodesic: |
2 | 6 | pass |
65 | 69 | GEODESIC_VERSION_MINOR |
66 | 70 | GEODESIC_VERSION_PATCH |
67 | 71 | |
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 | ||
68 | 84 | |
69 | 85 | cdef class Geod: |
70 | 86 | cdef geod_geodesic _geod_geodesic |
323 | 323 | The longitude points along a line. |
324 | 324 | lats: array |
325 | 325 | The latitude points along a line. |
326 | radians: bool, optional | |
326 | radians: bool, default=False | |
327 | 327 | If True, the input data is assumed to be in radians. |
328 | 328 | |
329 | 329 | Returns |
386 | 386 | An array of longitude values. |
387 | 387 | lats: array |
388 | 388 | An array of latitude values. |
389 | radians: bool, optional | |
389 | radians: bool, default=False | |
390 | 390 | If True, the input data is assumed to be in radians. |
391 | 391 | |
392 | 392 | Returns |
76 | 76 | |
77 | 77 | These are the scaling and angular distortion factors. |
78 | 78 | |
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. | |
80 | 80 | |
81 | 81 | Parameters |
82 | 82 | ---------- |
574 | 574 | |
575 | 575 | Parameters |
576 | 576 | ---------- |
577 | version: pyproj.enums.ProjVersion | |
577 | version: pyproj.enums.ProjVersion, default=pyproj.enums.ProjVersion.PROJ_5 | |
578 | 578 | 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. | |
582 | 581 | |
583 | 582 | Returns |
584 | 583 | ------- |
1 | 1 | This module is for building operations to be used when |
2 | 2 | building a CRS. |
3 | 3 | |
4 | https://proj.org/operations/ | |
4 | :ref:`operations` | |
5 | 5 | """ |
6 | 6 | import warnings |
7 | 7 | from typing import Any |
16 | 16 | |
17 | 17 | Class for constructing the Albers Equal Area Conversion. |
18 | 18 | |
19 | https://proj.org/operations/projections/aea.html | |
19 | :ref:`PROJ docs <aea>` | |
20 | 20 | """ |
21 | 21 | |
22 | 22 | def __new__( |
35 | 35 | First standard parallel (lat_1). |
36 | 36 | latitude_second_parallel: float |
37 | 37 | 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). | |
46 | 46 | """ |
47 | 47 | aea_json = { |
48 | 48 | "$schema": "https://proj.org/schemas/v0.2/projjson.schema.json", |
108 | 108 | |
109 | 109 | Class for constructing the Modified Azimuthal Equidistant conversion. |
110 | 110 | |
111 | https://proj.org/operations/projections/aeqd.html | |
111 | :ref:`PROJ docs <aeqd>` | |
112 | 112 | """ |
113 | 113 | |
114 | 114 | def __new__( |
121 | 121 | """ |
122 | 122 | Parameters |
123 | 123 | ---------- |
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). | |
132 | 132 | |
133 | 133 | """ |
134 | 134 | aeqd_json = { |
175 | 175 | |
176 | 176 | Class for constructing the Geostationary Satellite conversion. |
177 | 177 | |
178 | https://proj.org/operations/projections/geos.html | |
178 | :ref:`PROJ docs <geos>` | |
179 | 179 | """ |
180 | 180 | |
181 | 181 | def __new__( |
194 | 194 | Sweep angle axis of the viewing instrument. Valid options are “X” and “Y”. |
195 | 195 | satellite_height: float |
196 | 196 | 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). | |
205 | 205 | |
206 | 206 | """ |
207 | 207 | sweep_angle_axis = sweep_angle_axis.strip().upper() |
262 | 262 | |
263 | 263 | Class for constructing the Lambert Azimuthal Equal Area conversion. |
264 | 264 | |
265 | https://proj.org/operations/projections/laea.html | |
265 | :ref:`PROJ docs <laea>` | |
266 | 266 | """ |
267 | 267 | |
268 | 268 | def __new__( |
275 | 275 | """ |
276 | 276 | Parameters |
277 | 277 | ---------- |
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). | |
286 | 286 | |
287 | 287 | """ |
288 | 288 | laea_json = { |
329 | 329 | |
330 | 330 | Class for constructing the Lambert Conformal Conic 2SP conversion. |
331 | 331 | |
332 | https://proj.org/operations/projections/lcc.html | |
332 | :ref:`PROJ docs <lcc>` | |
333 | 333 | """ |
334 | 334 | |
335 | 335 | def __new__( |
348 | 348 | Latitude of 1st standard parallel (lat_1). |
349 | 349 | latitude_second_parallel: float |
350 | 350 | 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). | |
359 | 359 | |
360 | 360 | """ |
361 | 361 | lcc_json = { |
414 | 414 | |
415 | 415 | Class for constructing the Lambert Conformal Conic 1SP conversion. |
416 | 416 | |
417 | https://proj.org/operations/projections/lcc.html | |
417 | :ref:`PROJ docs <lcc>` | |
418 | 418 | """ |
419 | 419 | |
420 | 420 | def __new__( |
428 | 428 | """ |
429 | 429 | Parameters |
430 | 430 | ---------- |
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). | |
441 | 441 | |
442 | 442 | """ |
443 | 443 | lcc_json = { |
490 | 490 | |
491 | 491 | Class for constructing the Lambert Cylindrical Equal Area conversion. |
492 | 492 | |
493 | https://proj.org/operations/projections/cea.html | |
493 | :ref:`PROJ docs <cea>` | |
494 | 494 | """ |
495 | 495 | |
496 | 496 | def __new__( |
503 | 503 | """ |
504 | 504 | Parameters |
505 | 505 | ---------- |
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). | |
514 | 514 | |
515 | 515 | """ |
516 | 516 | cea_json = { |
563 | 563 | when exporting to WKT in PROJ>=7.0.0. Previous version will export it as a |
564 | 564 | PROJ-based coordinate operation in the WKT. |
565 | 565 | |
566 | https://proj.org/operations/projections/cea.html | |
566 | :ref:`PROJ docs <cea>` | |
567 | 567 | """ |
568 | 568 | |
569 | 569 | def __new__( |
576 | 576 | """ |
577 | 577 | Parameters |
578 | 578 | ---------- |
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). | |
587 | 587 | |
588 | 588 | """ |
589 | 589 | from pyproj.crs import CRS |
590 | 590 | |
591 | 591 | # hack due to: https://github.com/OSGeo/PROJ/issues/1881 |
592 | # https://proj.org/operations/projections/cea.html | |
593 | 592 | proj_string = ( |
594 | 593 | "+proj=cea " |
595 | 594 | f"+lon_0={longitude_natural_origin} " |
608 | 607 | |
609 | 608 | Class for constructing the Mercator (variant A) conversion. |
610 | 609 | |
611 | https://proj.org/operations/projections/merc.html | |
610 | :ref:`PROJ docs <merc>` | |
612 | 611 | """ |
613 | 612 | |
614 | 613 | def __new__( |
622 | 621 | """ |
623 | 622 | Parameters |
624 | 623 | ---------- |
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). | |
635 | 634 | |
636 | 635 | """ |
637 | 636 | merc_json = { |
684 | 683 | |
685 | 684 | Class for constructing the Mercator (variant B) conversion. |
686 | 685 | |
687 | https://proj.org/operations/projections/merc.html | |
686 | :ref:`PROJ docs <merc>` | |
688 | 687 | """ |
689 | 688 | |
690 | 689 | def __new__( |
697 | 696 | """ |
698 | 697 | Parameters |
699 | 698 | ---------- |
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). | |
708 | 707 | |
709 | 708 | """ |
710 | 709 | merc_json = { |
751 | 750 | |
752 | 751 | Class for constructing the Hotine Oblique Mercator (variant B) conversion. |
753 | 752 | |
754 | https://proj.org/operations/projections/omerc.html | |
753 | :ref:`PROJ docs <omerc>` | |
755 | 754 | """ |
756 | 755 | |
757 | 756 | def __new__( |
775 | 774 | Azimuth of initial line (azimuth). |
776 | 775 | angle_from_rectified_to_skew_grid: float |
777 | 776 | 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). | |
784 | 783 | """ |
785 | 784 | omerc_json = { |
786 | 785 | "$schema": "https://proj.org/schemas/v0.2/projjson.schema.json", |
844 | 843 | |
845 | 844 | Class for constructing the Orthographic conversion. |
846 | 845 | |
847 | https://proj.org/operations/projections/ortho.html | |
846 | :ref:`PROJ docs <ortho>` | |
848 | 847 | """ |
849 | 848 | |
850 | 849 | def __new__( |
857 | 856 | """ |
858 | 857 | Parameters |
859 | 858 | ---------- |
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). | |
868 | 867 | |
869 | 868 | """ |
870 | 869 | ortho_json = { |
911 | 910 | |
912 | 911 | Class for constructing the Polar Stereographic A conversion. |
913 | 912 | |
914 | https://proj.org/operations/projections/stere.html | |
913 | :ref:`PROJ docs <stere>` | |
915 | 914 | """ |
916 | 915 | |
917 | 916 | def __new__( |
925 | 924 | """ |
926 | 925 | Parameters |
927 | 926 | ---------- |
928 | latitude_natural_origin: float, optional | |
927 | latitude_natural_origin: float | |
929 | 928 | 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). | |
938 | 937 | |
939 | 938 | """ |
940 | 939 | |
988 | 987 | |
989 | 988 | Class for constructing the Polar Stereographic B conversion. |
990 | 989 | |
991 | https://proj.org/operations/projections/stere.html | |
990 | :ref:`PROJ docs <stere>` | |
992 | 991 | """ |
993 | 992 | |
994 | 993 | def __new__( |
1001 | 1000 | """ |
1002 | 1001 | Parameters |
1003 | 1002 | ---------- |
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). | |
1012 | 1011 | |
1013 | 1012 | """ |
1014 | 1013 | stere_json = { |
1055 | 1054 | |
1056 | 1055 | Class for constructing the Sinusoidal conversion. |
1057 | 1056 | |
1058 | https://proj.org/operations/projections/sinu.html | |
1057 | :ref:`PROJ docs <sinu>` | |
1059 | 1058 | """ |
1060 | 1059 | |
1061 | 1060 | def __new__( |
1067 | 1066 | """ |
1068 | 1067 | Parameters |
1069 | 1068 | ---------- |
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). | |
1076 | 1075 | |
1077 | 1076 | """ |
1078 | 1077 | sinu_json = { |
1110 | 1109 | |
1111 | 1110 | Class for constructing the Stereographic conversion. |
1112 | 1111 | |
1113 | https://proj.org/operations/projections/stere.html | |
1112 | :ref:`PROJ docs <stere>` | |
1114 | 1113 | """ |
1115 | 1114 | |
1116 | 1115 | def __new__( |
1124 | 1123 | """ |
1125 | 1124 | Parameters |
1126 | 1125 | ---------- |
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). | |
1137 | 1136 | |
1138 | 1137 | """ |
1139 | 1138 | |
1184 | 1183 | |
1185 | 1184 | Class for constructing the UTM conversion. |
1186 | 1185 | |
1187 | https://proj.org/operations/projections/utm.html | |
1186 | :ref:`PROJ docs <utm>` | |
1188 | 1187 | """ |
1189 | 1188 | |
1190 | 1189 | def __new__(cls, zone: str, hemisphere: str = "N"): |
1193 | 1192 | ---------- |
1194 | 1193 | zone: int |
1195 | 1194 | 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. | |
1198 | 1197 | """ |
1199 | 1198 | return cls.from_name(f"UTM zone {zone}{hemisphere}") |
1200 | 1199 | |
1205 | 1204 | |
1206 | 1205 | Class for constructing the Transverse Mercator conversion. |
1207 | 1206 | |
1208 | https://proj.org/operations/projections/tmerc.html | |
1207 | :ref:`PROJ docs <tmerc>` | |
1209 | 1208 | """ |
1210 | 1209 | |
1211 | 1210 | def __new__( |
1219 | 1218 | """ |
1220 | 1219 | Parameters |
1221 | 1220 | ---------- |
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). | |
1232 | 1231 | |
1233 | 1232 | """ |
1234 | 1233 | tmerc_json = { |
1281 | 1280 | |
1282 | 1281 | Class for constructing the Vetical Perspective conversion. |
1283 | 1282 | |
1284 | https://proj.org/operations/projections/nsper.html | |
1283 | :ref:`PROJ docs <nsper>` | |
1285 | 1284 | """ |
1286 | 1285 | |
1287 | 1286 | def __new__( |
1298 | 1297 | ---------- |
1299 | 1298 | viewpoint_height: float |
1300 | 1299 | 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). | |
1311 | 1310 | |
1312 | 1311 | """ |
1313 | 1312 | nsper_json = { |
1366 | 1365 | |
1367 | 1366 | Class for constructing the Rotated Latitude Longitude conversion. |
1368 | 1367 | |
1369 | https://proj.org/operations/projections/ob_tran.html | |
1368 | :ref:`PROJ docs <ob_tran>` | |
1370 | 1369 | """ |
1371 | 1370 | |
1372 | 1371 | def __new__(cls, o_lat_p: float, o_lon_p: float, lon_0: float = 0.0): |
1379 | 1378 | o_lon_p: float |
1380 | 1379 | Longitude of the North pole of the unrotated source CRS, |
1381 | 1380 | 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). | |
1384 | 1383 | |
1385 | 1384 | """ |
1386 | 1385 | rot_latlon_json = { |
1403 | 1402 | |
1404 | 1403 | Class for constructing the Equidistant Cylintrical (Plate Carrée) conversion. |
1405 | 1404 | |
1406 | https://proj.org/operations/projections/eqc.html | |
1405 | :ref:`PROJ docs <eqc>` | |
1407 | 1406 | """ |
1408 | 1407 | |
1409 | 1408 | def __new__( |
1417 | 1416 | """ |
1418 | 1417 | Parameters |
1419 | 1418 | ---------- |
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). | |
1430 | 1429 | """ |
1431 | 1430 | eqc_json = { |
1432 | 1431 | "$schema": "https://proj.org/schemas/v0.2/projjson.schema.json", |
1499 | 1498 | ---------- |
1500 | 1499 | source_crs: Any |
1501 | 1500 | 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. | |
1516 | 1515 | """ |
1517 | 1516 | from pyproj.crs import CRS |
1518 | 1517 |
68 | 68 | Parameters |
69 | 69 | ---------- |
70 | 70 | 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`. | |
72 | 73 | """ |
73 | 74 | return cls.from_json_dict( |
74 | 75 | { |
140 | 141 | Parameters |
141 | 142 | ---------- |
142 | 143 | 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`. | |
144 | 146 | """ |
145 | 147 | return cls.from_json_dict( |
146 | 148 | { |
286 | 288 | ---------- |
287 | 289 | axis: :class:`pyproj.crs.enums.Cartesian2DCSAxis` or str, optional |
288 | 290 | This is the axis order of the coordinate system. |
291 | Default is :attr:`pyproj.crs.enums.Cartesian2DCSAxis.EASTING_NORTHING`. | |
289 | 292 | """ |
290 | 293 | return cls.from_json_dict( |
291 | 294 | { |
367 | 370 | ---------- |
368 | 371 | axis: :class:`pyproj.crs.enums.VerticalCSAxis` or str, optional |
369 | 372 | This is the axis direction of the coordinate system. |
373 | Default is :attr:`pyproj.crs.enums.VerticalCSAxis.GRAVITY_HEIGHT`. | |
370 | 374 | """ |
371 | 375 | return cls.from_json_dict( |
372 | 376 | { |
594 | 594 | wkt_version: str or pyproj.enums.WktVersion |
595 | 595 | Version of WKT supported by CRS.to_wkt. |
596 | 596 | 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. | |
599 | 599 | |
600 | 600 | Returns |
601 | 601 | ------- |
728 | 728 | Input to create a Vertical Coordinate System accepted by |
729 | 729 | :meth:`pyproj.crs.CoordinateSystem.from_user_input` |
730 | 730 | or :class:`pyproj.crs.coordinate_system.VerticalCS` |
731 | errcheck: bool, optional | |
731 | errcheck: bool, default=False | |
732 | 732 | This parameter is for backwards compatibility with the old version. |
733 | 733 | It currently does nothing when True or False. |
734 | 734 | |
917 | 917 | Check if the other object is equivalent to this object. |
918 | 918 | If the other object is not a CRS, it will try to create one. |
919 | 919 | On Failure, it will return False. |
920 | ignore_axis_order: bool, optional | |
920 | ignore_axis_order: bool, default=False | |
921 | 921 | If True, it will compare the CRS class and ignore the axis order. |
922 | Default is False. | |
923 | 922 | |
924 | 923 | Returns |
925 | 924 | ------- |
1011 | 1010 | Returns |
1012 | 1011 | ------- |
1013 | 1012 | 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`). | |
1016 | 1014 | """ |
1017 | 1015 | return self._crs.name |
1018 | 1016 | |
1150 | 1148 | |
1151 | 1149 | Parameters |
1152 | 1150 | ---------- |
1153 | version: pyproj.enums.WktVersion | |
1151 | version: pyproj.enums.WktVersion, optional | |
1154 | 1152 | The version of the WKT output. |
1155 | 1153 | 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. | |
1158 | 1156 | |
1159 | 1157 | Returns |
1160 | 1158 | ------- |
1170 | 1168 | |
1171 | 1169 | Parameters |
1172 | 1170 | ---------- |
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. | |
1177 | 1175 | |
1178 | 1176 | Returns |
1179 | 1177 | ------- |
1239 | 1237 | |
1240 | 1238 | Parameters |
1241 | 1239 | ---------- |
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. | |
1244 | 1242 | :ref:`min_confidence` |
1245 | 1243 | |
1246 | 1244 | |
1280 | 1278 | ---------- |
1281 | 1279 | auth_name: str, optional |
1282 | 1280 | 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. | |
1285 | 1283 | :ref:`min_confidence` |
1286 | 1284 | |
1287 | 1285 | Returns |
1496 | 1494 | """ |
1497 | 1495 | Parameters |
1498 | 1496 | ---------- |
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" | |
1502 | 1500 | Anything accepted by :meth:`pyproj.crs.Datum.from_user_input` or |
1503 | 1501 | a :class:`pyproj.crs.datum.CustomDatum`. |
1504 | 1502 | ellipsoidal_cs: Any, optional |
1545 | 1543 | Input to create an Ellipsoidal Coordinate System. |
1546 | 1544 | Anything accepted by :meth:`pyproj.crs.CoordinateSystem.from_user_input` |
1547 | 1545 | 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. | |
1550 | 1548 | """ |
1551 | 1549 | derived_geographic_crs_json = { |
1552 | 1550 | "$schema": "https://proj.org/schemas/v0.2/projjson.schema.json", |
22 | 22 | """ |
23 | 23 | Parameters |
24 | 24 | ---------- |
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" | |
28 | 28 | Anything accepted by :meth:`pyproj.crs.Ellipsoid.from_user_input` |
29 | 29 | or a :class:`pyproj.crs.datum.CustomEllipsoid`. |
30 | prime_meridian: Any, optional | |
30 | prime_meridian: Any, default="Greenwich" | |
31 | 31 | Anything accepted by :meth:`pyproj.crs.PrimeMeridian.from_user_input`. |
32 | 32 | """ |
33 | 33 | datum_json = { |
60 | 60 | """ |
61 | 61 | Parameters |
62 | 62 | ---------- |
63 | name: str, optional | |
64 | Name of the ellipsoid. Default is 'undefined'. | |
63 | name: str, default="undefined" | |
64 | Name of the ellipsoid. | |
65 | 65 | semi_major_axis: float, optional |
66 | 66 | The semi major axis in meters. Required if missing radius. |
67 | 67 | inverse_flattening: float, optional |
78 | 78 | The name of the authority. |
79 | 79 | pj_type: pyproj.enums.PJType |
80 | 80 | The type of object to get the authorities. |
81 | allow_deprecated: bool, optional | |
81 | allow_deprecated: bool, default=False | |
82 | 82 | Allow a deprecated code in the return. |
83 | 83 | |
84 | 84 | Returns |
162 | 162 | |
163 | 163 | Parameters |
164 | 164 | ---------- |
165 | auth_name: Optional[str] | |
165 | auth_name: Optional[str], optional | |
166 | 166 | 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 | |
168 | 168 | 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 | |
171 | 171 | Filter returned CRS by the area of interest. Default method is intersection. |
172 | contains: Optional[bool] | |
172 | contains: bool, default=False | |
173 | 173 | Only works if the area of interest is passed in. |
174 | 174 | If True, then only CRS whose area of use entirely contains the specified |
175 | 175 | bounding box will be returned. If False, then only CRS whose area of use |
176 | 176 | intersects the specified bounding box will be returned. |
177 | allow_deprecated: Optional[bool] | |
177 | allow_deprecated: bool, default=False | |
178 | 178 | Allow a deprecated code in the return. |
179 | 179 | |
180 | 180 | Returns |
272 | 272 | |
273 | 273 | Parameters |
274 | 274 | ---------- |
275 | datum_name: Optional[str] | |
275 | datum_name: Optional[str], optional | |
276 | 276 | 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 | |
278 | 278 | Filter returned CRS by the area of interest. Default method is intersection. |
279 | contains: Optional[bool] | |
279 | contains: bool, default=False | |
280 | 280 | Only works if the area of interest is passed in. |
281 | 281 | If True, then only CRS whose area of use entirely contains the specified |
282 | 282 | bounding box will be returned. If False, then only CRS whose area of use |
351 | 351 | category: str, optional |
352 | 352 | Category of the unit: one of "linear", "linear_per_time", "angular", |
353 | 353 | "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. | |
356 | 356 | |
357 | 357 | Returns |
358 | 358 | ------- |
203 | 203 | dist: array, :class:`numpy.ndarray`, list, tuple, or scalar |
204 | 204 | Distance(s) between initial and terminus point(s) |
205 | 205 | in meters |
206 | radians: bool, optional | |
206 | radians: bool, default=False | |
207 | 207 | If True, the input data is assumed to be in radians. |
208 | Otherwise, the data is assumed to be in degrees. | |
208 | 209 | |
209 | 210 | Returns |
210 | 211 | ------- |
246 | 247 | Longitude(s) of terminus point(s) |
247 | 248 | lats2: array, :class:`numpy.ndarray`, list, tuple, or scalar |
248 | 249 | Latitude(s) of terminus point(s) |
249 | radians: bool, optional | |
250 | radians: bool, default=False | |
250 | 251 | If True, the input data is assumed to be in radians. |
252 | Otherwise, the data is assumed to be in degrees. | |
251 | 253 | |
252 | 254 | Returns |
253 | 255 | ------- |
349 | 351 | npts: int |
350 | 352 | Number of points to be returned |
351 | 353 | (including initial and/or terminus points, if required) |
352 | radians: bool, optional | |
354 | radians: bool, default=False | |
353 | 355 | 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 | |
355 | 358 | if initial_idx==0 then the initial point would be included in the output |
356 | 359 | (as the first point) |
357 | terminus_idx: int, optional | |
360 | terminus_idx: int, default=1 | |
358 | 361 | if terminus_idx==0 then the terminus point would be included in the output |
359 | 362 | (as the last point) |
360 | 363 | Returns |
475 | 478 | Longitude of the terminus point |
476 | 479 | lat2: float |
477 | 480 | Latitude of the terminus point |
478 | npts: int, optional | |
481 | npts: int, default=0 | |
479 | 482 | 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 | |
482 | 485 | 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 | |
485 | 488 | 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 | |
487 | 491 | if initial_idx==0 then the initial point would be included in the output |
488 | 492 | (as the first point) |
489 | terminus_idx: int, optional | |
493 | terminus_idx: int, default=1 | |
490 | 494 | if terminus_idx==0 then the terminus point would be included in the output |
491 | 495 | (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 | |
498 | 503 | out_lons: array, :class:`numpy.ndarray`, optional |
499 | 504 | Longitude(s) of the intermediate point(s) |
500 | 505 | If None then buffers would be allocated internnaly |
508 | 513 | |
509 | 514 | Returns |
510 | 515 | ------- |
511 | GeodIntermediateReturn | |
516 | GeodIntermediateReturn: | |
512 | 517 | number of points, distance and output arrays (GeodIntermediateReturn docs) |
513 | 518 | """ |
514 | 519 | return super()._inv_or_fwd_intermediate( |
611 | 616 | (including initial and/or terminus points, if required) |
612 | 617 | del_s: float |
613 | 618 | delimiter distance between two successive points |
614 | radians: bool, optional | |
619 | radians: bool, default=False | |
615 | 620 | 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 | |
617 | 623 | if initial_idx==0 then the initial point would be included in the output |
618 | 624 | (as the first point) |
619 | terminus_idx: int, optional | |
625 | terminus_idx: int, default=1 | |
620 | 626 | if terminus_idx==0 then the terminus point would be included in the output |
621 | 627 | (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 | |
626 | 635 | out_lons: array, :class:`numpy.ndarray`, optional |
627 | 636 | Longitude(s) of the intermediate point(s) |
628 | 637 | If None then buffers would be allocated internnaly |
636 | 645 | |
637 | 646 | Returns |
638 | 647 | ------- |
639 | GeodIntermediateReturn | |
648 | GeodIntermediateReturn: | |
640 | 649 | number of points, distance and output arrays (GeodIntermediateReturn docs) |
641 | 650 | """ |
642 | 651 | return super()._inv_or_fwd_intermediate( |
678 | 687 | The longitude points along a line. |
679 | 688 | lats: array, :class:`numpy.ndarray`, list, tuple, or scalar |
680 | 689 | The latitude points along a line. |
681 | radians: bool, optional | |
690 | radians: bool, default=False | |
682 | 691 | If True, the input data is assumed to be in radians. |
692 | Otherwise, the data is assumed to be in degrees. | |
683 | 693 | |
684 | 694 | Returns |
685 | 695 | ------- |
712 | 722 | The longitude points along a line. |
713 | 723 | lats: array, :class:`numpy.ndarray`, list, tuple, or scalar |
714 | 724 | The latitude points along a line. |
715 | radians: bool, optional | |
725 | radians: bool, default=False | |
716 | 726 | If True, the input data is assumed to be in radians. |
727 | Otherwise, the data is assumed to be in degrees. | |
717 | 728 | |
718 | 729 | Returns |
719 | 730 | ------- |
764 | 775 | An array of longitude values. |
765 | 776 | lats: array, :class:`numpy.ndarray`, list, tuple, or scalar |
766 | 777 | An array of latitude values. |
767 | radians: bool, optional | |
778 | radians: bool, default=False | |
768 | 779 | If True, the input data is assumed to be in radians. |
780 | Otherwise, the data is assumed to be in degrees. | |
769 | 781 | |
770 | 782 | Returns |
771 | 783 | ------- |
800 | 812 | ---------- |
801 | 813 | geometry: :class:`shapely.geometry.BaseGeometry` |
802 | 814 | The geometry to calculate the length from. |
803 | radians: bool, optional | |
815 | radians: bool, default=False | |
804 | 816 | If True, the input data is assumed to be in radians. |
817 | Otherwise, the data is assumed to be in degrees. | |
805 | 818 | |
806 | 819 | Returns |
807 | 820 | ------- |
870 | 883 | ---------- |
871 | 884 | geometry: :class:`shapely.geometry.BaseGeometry` |
872 | 885 | 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. | |
875 | 889 | |
876 | 890 | Returns |
877 | 891 | ------- |
286 | 286 | void proj_list_destroy(PJ_OBJ_LIST *result) |
287 | 287 | void proj_int_list_destroy(int* list) |
288 | 288 | 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) | |
291 | 289 | ctypedef enum PJ_GUESSED_WKT_DIALECT: |
292 | 290 | PJ_GUESSED_WKT2_2018 |
293 | 291 | PJ_GUESSED_WKT2_2015 |
6 | 6 | control parameter key/value pairs. The key/value pairs can |
7 | 7 | either be passed in a dictionary, or as keyword arguments, |
8 | 8 | 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 | |
10 | 10 | key/value pairs defining different map projections. |
11 | 11 | |
12 | 12 | Calling a Proj class instance with the arguments lon, lat will |
51 | 51 | control parameter key/value pairs. The key/value pairs can |
52 | 52 | either be passed in a dictionary, or as keyword arguments, |
53 | 53 | 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 | |
55 | 55 | key/value pairs defining different map projections. |
56 | 56 | |
57 | 57 | Parameters |
157 | 157 | Input longitude coordinate(s). |
158 | 158 | latitude: scalar or array (numpy or python) |
159 | 159 | Input latitude coordinate(s). |
160 | inverse: boolean, optional | |
160 | inverse: bool, default=False | |
161 | 161 | 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 | |
164 | 164 | 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. | |
166 | 166 | This does not work with pyproj 2 and is ignored. It will be enabled again |
167 | 167 | 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. | |
171 | 171 | |
172 | 172 | Returns |
173 | 173 | ------- |
209 | 209 | Input longitude coordinate(s). |
210 | 210 | latitude: scalar or array (numpy or python) |
211 | 211 | 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. | |
218 | 218 | |
219 | 219 | Returns |
220 | 220 | ------- |
226 | 226 | area_of_use: str, optional |
227 | 227 | filename: str, optional |
228 | 228 | 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 | |
234 | 234 | 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 | |
237 | 236 | The directory to download the geojson file to. |
238 | 237 | Default is the user writable directory. |
239 | 238 |
162 | 162 | Projection of input data. |
163 | 163 | crs_to: pyproj.crs.CRS or input used to create one |
164 | 164 | Projection of output data. |
165 | skip_equivalent: bool, optional | |
165 | skip_equivalent: bool, default=False | |
166 | 166 | 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 | |
169 | 169 | If true, the transform method will accept as input and return as output |
170 | 170 | coordinates using the traditional GIS order, that is longitude, latitude |
171 | 171 | for geographic CRS and easting, northing for most projected CRS. |
172 | Default is false. | |
173 | 172 | area_of_interest: :class:`pyproj.transformer.AreaOfInterest`, optional |
174 | 173 | The area of interest to help order the transformations based on the |
175 | 174 | best operation for the area. |
237 | 236 | directory: str or Path, optional |
238 | 237 | The directory to download the grids to. |
239 | 238 | Defaults to :func:`pyproj.datadir.get_user_data_dir` |
240 | open_license: bool, optional | |
239 | open_license: bool, default=True | |
241 | 240 | If True, will only download grids with an open license. |
242 | Defaults to False. | |
243 | verbose: bool, optional | |
241 | verbose: bool, default=False | |
244 | 242 | If True, will print information about grids downloaded. |
245 | Default is False. | |
246 | 243 | """ |
247 | 244 | if directory is None: |
248 | 245 | directory = get_user_data_dir(True) |
437 | 434 | Projection of input data. |
438 | 435 | proj_to: :obj:`pyproj.Proj` or input used to create one |
439 | 436 | Projection of output data. |
440 | skip_equivalent: bool, optional | |
437 | skip_equivalent: bool, default=False | |
441 | 438 | 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 | |
444 | 441 | If true, the transform method will accept as input and return as output |
445 | 442 | coordinates using the traditional GIS order, that is longitude, latitude |
446 | 443 | for geographic CRS and easting, northing for most projected CRS. |
447 | Default is false. | |
448 | 444 | area_of_interest: :class:`pyproj.transformer.AreaOfInterest`, optional |
449 | 445 | The area of interest to help select the transformation. |
450 | 446 | |
493 | 489 | Projection of input data. |
494 | 490 | crs_to: pyproj.crs.CRS or input used to create one |
495 | 491 | Projection of output data. |
496 | skip_equivalent: bool, optional | |
492 | skip_equivalent: bool, default=False | |
497 | 493 | 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 | |
500 | 496 | If true, the transform method will accept as input and return as output |
501 | 497 | coordinates using the traditional GIS order, that is longitude, latitude |
502 | 498 | for geographic CRS and easting, northing for most projected CRS. |
503 | Default is false. | |
504 | 499 | area_of_interest: :class:`pyproj.transformer.AreaOfInterest`, optional |
505 | 500 | The area of interest to help select the transformation. |
506 | 501 | authority: str, optional |
548 | 543 | def from_pipeline(proj_pipeline: str) -> "Transformer": |
549 | 544 | """Make a Transformer from a PROJ pipeline string. |
550 | 545 | |
551 | https://proj.org/operations/pipeline.html | |
546 | :ref:`pipeline` | |
552 | 547 | |
553 | 548 | .. versionadded:: 3.1.0 AUTH:CODE string suppor (e.g. EPSG:1671) |
554 | 549 | |
603 | 598 | Input z coordinate(s). |
604 | 599 | tt: scalar or array (numpy or python), optional |
605 | 600 | Input time coordinate(s). |
606 | radians: boolean, optional | |
601 | radians: bool, default=False | |
607 | 602 | 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. | |
614 | 609 | direction: pyproj.enums.TransformDirection, optional |
615 | 610 | The direction of the transform. |
616 | 611 | Default is :attr:`pyproj.enums.TransformDirection.FORWARD`. |
712 | 707 | ---------- |
713 | 708 | points: list |
714 | 709 | List of point tuples. |
715 | switch: boolean, optional | |
710 | switch: bool, default=False | |
716 | 711 | If True x, y or lon,lat coordinates of points are switched to y, x |
717 | 712 | or lat, lon. Default is False. |
718 | time_3rd: boolean, optional | |
713 | time_3rd: bool, default=False | |
719 | 714 | If the input coordinates are 3 dimensional and the 3rd dimension is time. |
720 | radians: boolean, optional | |
715 | radians: bool, default=False | |
721 | 716 | 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. | |
728 | 723 | direction: pyproj.enums.TransformDirection, optional |
729 | 724 | The direction of the transform. |
730 | 725 | Default is :attr:`pyproj.enums.TransformDirection.FORWARD`. |
844 | 839 | Right bounding coordinate in source CRS. |
845 | 840 | top: float |
846 | 841 | Top bounding coordinate in source CRS. |
847 | densify_points: uint, optional | |
842 | densify_points: uint, default=21 | |
848 | 843 | Number of points to add to each edge to account for nonlinear edges |
849 | 844 | 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 | |
852 | 847 | 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. | |
859 | 852 | direction: pyproj.enums.TransformDirection, optional |
860 | 853 | The direction of the transform. |
861 | 854 | Default is :attr:`pyproj.enums.TransformDirection.FORWARD`. |
891 | 884 | version: pyproj.enums.ProjVersion |
892 | 885 | The version of the PROJ string output. |
893 | 886 | 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. | |
896 | 889 | |
897 | 890 | Returns |
898 | 891 | ------- |
921 | 914 | |
922 | 915 | Parameters |
923 | 916 | ---------- |
924 | version: pyproj.enums.WktVersion | |
917 | version: pyproj.enums.WktVersion, optional | |
925 | 918 | The version of the WKT output. |
926 | 919 | 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. | |
929 | 922 | |
930 | 923 | Returns |
931 | 924 | ------- |
942 | 935 | |
943 | 936 | Parameters |
944 | 937 | ---------- |
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. | |
949 | 942 | |
950 | 943 | Returns |
951 | 944 | ------- |
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 | certifi |
0 | pyproj |
8 | 8 | license-file = LICENSE |
9 | 9 | platform = any |
10 | 10 | 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 | |
26 | 26 | url = https://github.com/pyproj4/pyproj |
27 | 27 | 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 | |
33 | 33 | |
34 | 34 | [options] |
35 | 35 | zip_safe = False # https://mypy.readthedocs.io/en/stable/installed_packages.html |
36 | 36 | packages = pyproj,pyproj.crs |
37 | 37 | python_requires = >=3.7 |
38 | install_requires = | |
39 | certifi | |
38 | install_requires = | |
39 | certifi | |
40 | 40 | |
41 | 41 | [options.entry_points] |
42 | console_scripts = | |
43 | pyproj = pyproj.__main__:main | |
42 | console_scripts = | |
43 | pyproj = pyproj.__main__:main | |
44 | 44 | |
45 | 45 | [flake8] |
46 | 46 | 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 |
192 | 192 | This function retrieves the package data |
193 | 193 | """ |
194 | 194 | # setup package data |
195 | package_data = {"pyproj": ["*.pyi", "py.typed"]} | |
195 | package_data = {"pyproj": ["*.pyi", "py.typed", "*.pyx", "*.pxd"]} | |
196 | 196 | if os.environ.get("PROJ_WHEEL") is not None and INTERNAL_PROJ_DIR.exists(): |
197 | 197 | package_data["pyproj"].append( |
198 | 198 | str(BASE_INTERNAL_PROJ_DIR / "share" / "proj" / "*") |