City house addressing grids

We “all know” Chicago’s addresses start at State & Madison (0,0), and “increase 800 numbers per mile”.

OK, how to make a map in GMT, but instead of the usual latitude and longitude around the edges, have these house numbers?

OK, now for a twist, how to do this for Highland Park, IL, whose E/W numbers are not counted from a N/S meridian, but from an oblique axis parallel to the generalized lake shore)?

It’s for my upcoming brilliant project,

We don’t have any geoxxx service to convert addresses into coordinates. Maps in GMT must have coordinates but they don’t have to geographical. They can be in any referencing system. Either projected coordinates or some local system. Non geographical coordinates are all treated as Cartesian.

I am just saying, how to I make a map,
that has its origin at 41.8820489, -87.6277999 (assume same system as GMT’s -R)
and instead of showing latitude and longitude along
the map’s edges, shows, one per mile, 0, 800N, 1600N… on one axis,
and 0, 800W, 1600W… on the other. Thanks.

And in what coordinate system is the data that you to map?

I’ll have to leave soon but I think you may be seeking for “custom annotations”. Search the CookBook for them.

You must know what map projection is used to convert geographical coordinates to those meters. Then you can project them to meters and make a Cartesian plot

OK,

gmt coast -R-88/-87/41.5/42.5 -JM3c -B -Ggrey -W -png

now all that is left is how to replace longitude and latitude around the edges with my aforementioned grid scheme. Thanks.

Have you searched for the “custom annotations” like I suggested? And, again, in what coordinate system is your data?
With so few information no one will be able to help.

Here are where labels along the axes would go,
(if I wanted them there, but I don’t. I want them on the edges,
like my gmt coast example above.)

perl -wle '
for my $azimuth ( 0, 90 ) {
    for my $distance ( -2 .. 2 ) {
        print join " ", 41.8820489, -87.6277999, $azimuth, $distance,
          abs $distance * 800,
          $azimuth
          ? ( $distance >= 0 ? "E" : "W" )
          : ( $distance >= 0 ? "N" : "S" );
    }
}'|\
geod +ellps=WGS84 +units=us-mi -f %.6f|\
perl -anwle 'printf "%4s%s %s %s\n", @F[3,4,0,1];'
#geod: https://proj.org/

1600S 41.853070 -87.627800
 800S 41.867560 -87.627800
   0N 41.882049 -87.627800
 800N 41.896538 -87.627800
1600N 41.911028 -87.627800
1600W 41.882042 -87.666578
 800W 41.882047 -87.647189
   0E 41.882049 -87.627800
 800E 41.882047 -87.608411
1600E 41.882042 -87.589022

But I am totally going about this the wrong way.
I am not taking advantage of GMT’s built in mapping abilities.
I might as well be writing raw postscript: “place label at coordinates”, a shame.

All I want to do is make my new origin
41.8820489, -87.6277999 (WGS84),
and my new units mile * 800,
and let GMT do the rest.
Projection: any would be fine,
cities aren’t that big.

I bet I wouldn’t even need one single external program, all could be done
within just plain GMT. Maybe even the fancy +±- to NESW conversion too
perhaps!

Anyway I’ve got to do my coordinate conversion before I start working on any annotations.

Today I found
https://docs.generic-mapping-tools.org/dev/gallery/ex28.html .
Maybe I need to generate an empty .nc file.

I am not sure how much your case can relate, but here, I had data in meters relative to a central point and I used grdproject to switch to lon/lat.
You can do the reverse operation …. Maybe it can help somehow?

1 Like

is a handy workaround!