Skip to content

markstock/idealplace

Repository files navigation

IdealPlace

Find the ideal location on the Earth for you

Sample output

Build and run

Should be as easy as:

make
./idealplace

The program will run and output a 3600x1800 pixel 16-bit greyscale PNG of the Earth, with lighter colors representing areas which match the given preferences.

On OSX, first install Homebrew, then install the two dependencies:

brew install libpng pkg-config
make
./idealplace

Options

All options can be preceded by either a "+" or a "-" and they will all be weighted similarly. To apply different weights to the different criteria, either preceed each argument with "-" for less weight or "+" for more weight, and use more of each character to halve or double the weight.

-tf januarylow januaryhigh julylow julyhigh		(all in F)
-tc januarylow januaryhigh julylow julyhigh		(all in C)
-wtf januarylow januaryhigh 	(all in F)
-wtc januarylow januaryhigh 	(all in C)
-stf julylow julyhigh			(all in F)
-stc julylow julyhigh			(all in C)
-m [1-12]			Evaluate only for a specific month
-mtf low high			(low and high temps for that month in F)
-mtc low high			(low and high temps for that month in C)
-mr value			Average precipitation in mm/month
-ac value			Average cloud cover (0=none to 1=total)
-wmph value			Average wind speed (mph)
-wmps value			Average wind speed (m/s)
-hdi value			Human development index (0 to 1)
-mtn value			Proximity to and magnitude of terrain (0 to 1)
-ct lat lon			Close to a given location (N lat and E lon, use negative for S and W)
-ff lat lon			Far from a given location (N lat and E lon, use negative for S and W)
-cl lat lon			Climate like a given location (N lat and E lon, use negative for S and W)
-el lat lon			Everything like a given location (N lat and E lon, use negative for S and W)
-new				Start setting preferences for a second person
-nobdry				Do not draw national boundaries on output image
-o name.png			Output file name

For example, to select for only annual rainfall and wind, but have rainfall be twice as "important" as wind, use any of these:

./idealplace ++mr 100 +wmph 8
./idealplace +mr 100 -wmph 8
./idealplace -mr 100 --wmph 8

You can use up to 50 "+" or "-", but at that point, just remove all other criteria arguments from the command line, or just look at the source png image for your ideal place.

Sources

  • Air temperature and precipitation from the ssp245 (most-likely scenario) projection from GloH2O dataset.
  • Clouds are a 2021-4 average, data from MERRA-2.
  • Elevation from GDEMM2024, further processed to determine per-pixel elevation variance.
  • Human Development Index from Mosaiks; I expanded it from -56:74 to -90:90 and filled in the holes.
  • Wind speed from GWA3
  • Population density from Copernicus.
  • National boundary lines from naturalearthdata.org.
  • City locations from GeoNames, licensed under a Creative Commons Attribution 4.0 License
  • While I don't use it in the code, I enjoy browsing WeatherSpark.

To Do

  • Use the open-water data set to make an image of distance-to-water (to allow "more coastal" option)
  • And use that to mask off all open water areas (like the Caspian Sea)
  • But since it has rivers, can we also have a "near water" in addition to "near ocean"?
  • Generate a layer with US state boundaries to aid in locating these places, make that optional
  • Support optional "no elevation less than x" or a desired elevation (use log scale?)
  • Use population density to allow "in a city but near the country" or "in the country but near a city"
  • Find a higher-resolution cloud data set, if possible
  • Use GeoNames dataset set a "climate-like" place given a city name (not just lat-lon)
  • Can we incorporate hazards like earthquakes, volcanoes, hurricanes, and tornadoes?

Citing IdealPlace

I don't get paid for writing or maintaining this, so if you find this tool useful or mention it in your writing, please cite it by using the following BibTeX entry.

@Misc{IdealPlace2024,
  author =       {Mark J.~Stock},
  title =        {Ideal{P}lace:  {F}ind the ideal location on the {E}arth for you},
  howpublished = {\url{https://github.com/markstock/idealplace}},
  year =         {2024}
}

About

Find the ideal location on the Earth for you

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages