Skip to content

DOC: Add introductory "concepts" documentation and a glossary of terms - #1638

Open
djhoese wants to merge 2 commits into
pyproj4:mainfrom
djhoese:docs-concepts
Open

djhoese wants to merge 2 commits into
pyproj4:mainfrom
djhoese:docs-concepts

Conversation

@djhoese

@djhoese djhoese commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

As mentioned in #1507, the documentation is a little lacking when it comes to explaining the basic concepts of what pyproj works with. The acronyms are especially difficult to parse if you're not already well versed in them.

I asked Claude to take a swing at resolving #1507 and it asked me how far it should take it. I told it to go far and add new documents for a full glossary and basic concepts. I think it did a really good job. I've manually reviewed everything in this pull request even though Claude wrote it all. I made some small edits myself. I also had Claude update any implicit references to PROJ documentation with the proj: prefix so if in the future pyproj ever adds documents or references matching the PROJ documents these references don't unintentionally start going to the pyproj docs.

Concerns Claude had about what it wrote:

  • Is it write to say that WGS84 is used in "most web APIs"? I changed it to say "many web APIs".
  • "+proj=latlon" is not equivalent to "EPSG:4326" but rather is just "similar" to. Claude went with "similar".

Concerns I have:

  • Some of the low-level details about transformations versus conversions and ISO standards were all added by Claude after I complained about the strict PROJ definitions for these terms not matching how I typically think of "transformation" (converting between CRSes versus converting between datums).

CC @jonas8217, @savjaylade84, and @mikelcatania who commented on the related issue.

@djhoese
djhoese requested a review from snowman2 September 14, 2026 17:26
@djhoese djhoese self-assigned this Sep 14, 2026
@djhoese djhoese added the documentation Docs need updating label Sep 14, 2026
@codecov

codecov Bot commented Sep 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.84%. Comparing base (e81e5e5) to head (3ad7fc7).
⚠️ Report is 54 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1638      +/-   ##
==========================================
- Coverage   95.85%   95.84%   -0.01%     
==========================================
  Files          20       20              
  Lines        1880     1879       -1     
==========================================
- Hits         1802     1801       -1     
  Misses         78       78              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@snowman2

Copy link
Copy Markdown
Member

I like the organization and style. The size of the MR will require some time to review.

@mackenziereading19

Copy link
Copy Markdown
Contributor

Thanks for putting this together - I reviewed it mainly from the newcomer/readability angle that prompted #1507. The overall structure is much clearer. I spotted three places where the wording might be worth tightening:

  1. GeoJSON / EPSG:4326 wording - The concepts page says GeoJSON files use WGS 84 (EPSG:4326). That may be slightly misleading for newcomers because GeoJSON uses WGS 84 longitude/latitude ordering, whereas EPSG:4326 officially has latitude/longitude axis order. It may be clearer to separate GeoJSON from the EPSG:4326 example here.

  2. Two absolutes in “Why it matters” - “The same numbers in two different CRSes are two different places” and “Combining data from different sources therefore always means…” both feel a little stronger than necessary. Perhaps “can represent different places” and “make sure CRSs are known and compatible, transforming to a common CRS where necessary” would preserve the teaching point without overgeneralising.

  3. UTM as ‘120 projected CRSes’ - This seems a bit too specific. UTM is more naturally described as 60 longitudinal zones with northern/southern hemisphere variants; the actual projected CRS definitions also depend on the datum. Framing it as a projection system rather than a fixed count of CRSes may be more robust.

I also checked the conversion/transformation distinction because you flagged it in the PR description; the current explanation reads clearly to me and I don’t have a substantive change to suggest there.

@djhoese

djhoese commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Thanks @mackenziereading19! That's exactly what I was looking for. I've made changes based on what you said. I also had Claude change the language around "most software" to "many software packages" as I don't know if anyone is in a position to say what most software does.

@djhoese

djhoese commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

And yes @snowman2 this is big. Hopefully you and others can find time to review. I think this is the type of content that could have saved me a lot of confusion 15+ years ago when I started working with projections and resampling. I had to read a paper book! 😮

Oh great:

 FAILED test/test_transformer.py::test_transformer_group__download_grids - urllib.error.URLError: <urlopen error [WinError 10054] An existing connection was forcibly closed by the remote host>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Docs need updating

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DOC: Make the getting started section a bit more readable to newcomers

3 participants