PROJSYNC(1)

πŸ’… PROJSYNC(1) β€” like, the manual, but make it make sense

okay so this is projsync from the PROJ manual set β€” yes, lowercase proj, the whole family, and honestly she's iconic. sit down, grab a strawberry drink πŸ“, and let me walk you through it.


✨ NAME ✨

projsync β€” the downloading tool of resource files. that's it, that's the vibe. she fetches files for you 🫢


πŸŽ€ SYNOPSIS πŸŽ€

   projsync
     [--endpoint URL]
     [--local-geojson-file FILENAME]
     ([--user-writable-directory] | [--system-directory] | [--target-dir DIRNAME])
     [--bbox west_long,south_lat,east_long,north_lat]
     [--spatial-test contains|intersects]
     [--source-id ID] [--area-of-use NAME]
     [--file NAME]
     [--all] [--exclude-world-coverage]
     [--quiet | --verbose] [--dry-run] [--list-files]
     [--no-version-filtering]

πŸ¦‹ DESCRIPTION πŸ¦‹

so projsync is literally a program that downloads remote resource files into a local directory. no cap. it's the alternative to two other things: grabbing a whole proj-data-X.Y.Z archive file, or using the on-demand networking capabilities of PROJ. so like, instead of the whole archive or the live-in-the-moment network thing, you get to pick and choose. main character energy honestly πŸ‘‘

the following control parameters can appear in any order β€” any order bestie, she's flexible:

  • --endpoint URL β€” sets the URL where she downloads the master files.geojson file, and then the resource files themselves. defaults to whatever value is set in proj.ini. iykyk ✨
  • --local-geojson-file FILENAME β€” sets the filename for the master GeoJSON files that references resources. defaults to ${endpoint}/files.geojson. πŸŽ€
  • --user-writable-directory β€” says the resource files must be downloaded into the user writable directory. and yes, this is the default, so she already gets it πŸ’…
  • --system-directory β€” says the resource files must be downloaded into the ${installation_prefix}/share/proj directory. ⚠️ caveat incoming: the user launching projsync should make sure it has writing rights in that directory. like, actually make sure. don't just assume.
  • --target-dir DIRNAME β€” the directory into which resource files must be downloaded. simple, cute, does what it says 🫢
  • --bbox west_long,south_lat,east_long,north_lat β€” specifies an area of interest to restrict which resources get downloaded. the area of interest is a bounding box with geographic coordinates, expressed in degrees in a unspecified geographic CRS. and here's the fine print, don't skip it: west_long and east_long should be in the [-180,180] range, and south_lat and north_lat in the [-90,90]. also west_long is generally lower than east_long, except in the case where the area of interest crosses the antimeridian β€” yes, that one edge case, she's special 🌈
  • --spatial-test contains|intersects β€” specifies how the extent of the resource files is compared to the area of use specified explicitly with --bbox. by default, any resource files whose extent intersects the value specified by --bbox will be selected. if you use the contains strategy, only resource files whose extent is contained in the value specified by --bbox will be selected. intersects = vibes, contains = strict queen πŸ’€
  • --source-id ID β€” restricts the resource files to be downloaded to those whose source_id property contains the ID value. and ooh, fun trick: specifying ? as ID will list all possible values. lowkey obsessed with that πŸ”₯
  • --area-of-use NAME β€” restricts the resource files to be downloaded to those whose area_of_use property contains the NAME value. specifying ? as NAME will list all possible values. same trick, different property, slay ✨
  • --file NAME β€” restricts the resource files to be downloaded to those whose name property contains the NAME value. specifying ? as NAME will list all possible values. okay yes that's three for three on the ? thing, it's consistent, we love consistency πŸŽ€
  • --all β€” ask to download all files. all of them. every single one. go off πŸ‘‘
  • --exclude-world-coverage β€” excludes files which have world coverage. bye bye globals 🌍✌️
  • -q / --quiet β€” quiet mode. shhh 🀫
  • --verbose β€” added in version 8.1. verbose mode (more than default). she's chatty πŸ’¬
  • --dry-run β€” simulates the behavior of the tool without downloading resource files. like a rehearsal, no actual files harmed πŸ™ˆ
  • --list-files β€” lists file names, with the source_id and area_of_use properties. so you can window-shop before you commit πŸ›οΈ
  • --no-version-filtering β€” added in version 8.1. here's the deal: by default, projsync only downloads files that are compatible of the PROJ_DATA.VERSION metadata of proj.db, taking into account the version_added and version_removed properties of entries in files.geojson. when you specify this switch, all files referenced in files.geojson will be candidate (combined with other filters). so like, the version gate goes bye-bye πŸšͺ
🚨 important, bestie, read this twice: at least one of --list-files, --file, --source-id, --area-of-use, --bbox or --all must be specified. she's not gonna guess what you want, she's not a mind reader πŸ’€
πŸ’‘ also: options --file, --source-id, --area-of-use and --bbox are combined with a AND logic. AND. not OR. everybody has to match. periodt.

🌸 EXAMPLES 🌸

  1. Download all resource files
   projsync --all
  1. Download resource files covering specified point and attributed to an agency
   projsync --source-id fr_ign --bbox 2,49,2,49

see, 2,49,2,49 β€” a whole degenerate point as a bbox, she ate that πŸ“


🧚 SEE ALSO 🧚

cs2cs(1), cct(1), geod(1), gie(1), proj(1), projinfo(1) β€” the whole friend group, go say hi πŸ’œ


πŸ’€ BUGS πŸ’€

a list of known bugs can be found at ‐

   https://github.com/OSGeo/PROJ/issues

where new bug reports can be submitted to. bugs specific to resource files should be submitted to ‐

   https://github.com/OSGeo/PROJ-data/issues

so like, know which repo you're filing in, ok? it's giving considerate 🫢


🌈 HOME PAGE 🌈

   https://proj.org/

πŸ‘‘ AUTHOR πŸ‘‘

Even Rouault


1983-2026, PROJ contributors


okay that's the whole page, mwah πŸ’… β€” and for the record, this is PROJSYNC(1) from the PROJ manual, version 9.9, dated 15 Sep 2026. drink some water, download some resource files, and remember: at least one filter. always. bye bestie πŸ¦‹βœ¨

πŸ“¦ where this page comes from