pycoast 1.6.1__tar.gz → 1.7.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pycoast-1.7.0/AUTHORS.md +20 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/MANIFEST.in +1 -1
- pycoast-1.7.0/PKG-INFO +69 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/Makefile +1 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/installation.rst +1 -1
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/__init__.py +1 -0
- pycoast-1.7.0/pycoast/conftest.py +14 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/cw_agg.py +5 -1
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/cw_base.py +49 -42
- pycoast-1.7.0/pycoast/tests/coasts_and_grid.ini +13 -0
- pycoast-1.7.0/pycoast/tests/coasts_and_grid_agg.ini +17 -0
- pycoast-1.7.0/pycoast/tests/eastern_shapes_agg.png +0 -0
- pycoast-1.7.0/pycoast/tests/eastern_shapes_pil.png +0 -0
- pycoast-1.7.0/pycoast/tests/grid_europe_agg_txt.png +0 -0
- pycoast-1.7.0/pycoast/tests/grid_from_dict_agg.png +0 -0
- pycoast-1.7.0/pycoast/tests/grid_from_dict_pil.png +0 -0
- pycoast-1.7.0/pycoast/tests/grid_germ.png +0 -0
- pycoast-1.7.0/pycoast/tests/grid_nh_agg.png +0 -0
- pycoast-1.7.0/pycoast/tests/grid_nh_cfg_agg.png +0 -0
- pycoast-1.7.0/pycoast/tests/lonlat_boundary_cross.png +0 -0
- pycoast-1.7.0/pycoast/tests/nh_cities_agg.ini +26 -0
- pycoast-1.7.0/pycoast/tests/nh_cities_pil.ini +20 -0
- pycoast-1.7.0/pycoast/tests/nh_one_shapefile.ini +11 -0
- pycoast-1.7.0/pycoast/tests/nh_points_agg.ini +24 -0
- pycoast-1.7.0/pycoast/tests/nh_points_pil.ini +19 -0
- pycoast-1.7.0/pycoast/tests/no_h_scratch_agg.png +0 -0
- pycoast-1.7.0/pycoast/tests/no_h_scratch_pil.png +0 -0
- pycoast-1.7.0/pycoast/tests/no_v_scratch_agg.png +0 -0
- pycoast-1.7.0/pycoast/tests/no_v_scratch_pil.png +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/DejaVuSerif.ttf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/CITIES/cities.txt +20 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L1.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L1.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L1.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L1.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L2.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L2.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L2.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L2.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L3.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L3.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L3.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L3.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L4.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L4.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L4.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/GSHHS_shp/l/GSHHS_l_L4.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L1.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L1.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L1.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L1.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L2.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L2.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L2.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L2.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L3.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L3.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L3.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_border_c_L3.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L01.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L01.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L01.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L01.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L02.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L02.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L02.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L02.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L03.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L03.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L03.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L03.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L04.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L04.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L04.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L04.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L05.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L05.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L05.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L05.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L06.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L06.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L06.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L06.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L07.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L07.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L07.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L07.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L08.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L08.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L08.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L08.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L09.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L09.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L09.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L09.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L1.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L1.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L1.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L10.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L10.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L10.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L10.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L11.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L11.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L11.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L11.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L2.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L2.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L2.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L3.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L3.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/gshhs/WDBII_shp/c/WDBII_river_c_L3.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/Metareas.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/Metareas.mxd +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/Metareas.prj +1 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/Metareas.sbn +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/Metareas.sbx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/Metareas.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/Metareas.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/README +3 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BRASIL.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BRASIL.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BRASIL.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BR_Capitais.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BR_Capitais.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BR_Capitais.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BR_Contorno.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BR_Contorno.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BR_Contorno.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BR_Regioes.dbf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BR_Regioes.shp +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/BR_Regioes.shx +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/divisao_politica.txt +40 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/divisao_politica/leia.txt +9 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/metarea5.gsf +0 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/metarea5.tbl +21 -0
- pycoast-1.7.0/pycoast/tests/test_data/shapes/metarea5.tbl.info +25 -0
- pycoast-1.7.0/pycoast/tests/test_data/test_config.ini +12 -0
- pycoast-1.7.0/pycoast/tests/test_pycoast.py +2114 -0
- pycoast-1.7.0/pycoast/tests/western_shapes_agg.png +0 -0
- pycoast-1.7.0/pycoast/tests/western_shapes_pil.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/version.py +4 -4
- pycoast-1.7.0/pycoast.egg-info/PKG-INFO +69 -0
- pycoast-1.7.0/pycoast.egg-info/SOURCES.txt +207 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast.egg-info/requires.txt +2 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/setup.cfg +1 -1
- {pycoast-1.6.1 → pycoast-1.7.0}/setup.py +4 -2
- {pycoast-1.6.1 → pycoast-1.7.0}/versioneer.py +173 -108
- pycoast-1.6.1/PKG-INFO +0 -65
- pycoast-1.6.1/pycoast/tests/eastern_shapes_agg.png +0 -0
- pycoast-1.6.1/pycoast/tests/eastern_shapes_pil.png +0 -0
- pycoast-1.6.1/pycoast/tests/grid_europe_agg_txt.png +0 -0
- pycoast-1.6.1/pycoast/tests/grid_from_dict_agg.png +0 -0
- pycoast-1.6.1/pycoast/tests/grid_from_dict_pil.png +0 -0
- pycoast-1.6.1/pycoast/tests/grid_germ.png +0 -0
- pycoast-1.6.1/pycoast/tests/grid_nh_agg.png +0 -0
- pycoast-1.6.1/pycoast/tests/grid_nh_cfg_agg.png +0 -0
- pycoast-1.6.1/pycoast/tests/no_h_scratch_agg.png +0 -0
- pycoast-1.6.1/pycoast/tests/no_h_scratch_pil.png +0 -0
- pycoast-1.6.1/pycoast/tests/no_v_scratch_agg.png +0 -0
- pycoast-1.6.1/pycoast/tests/no_v_scratch_pil.png +0 -0
- pycoast-1.6.1/pycoast/tests/test_pycoast.py +0 -2154
- pycoast-1.6.1/pycoast/tests/utils.py +0 -42
- pycoast-1.6.1/pycoast/tests/western_shapes_agg.png +0 -0
- pycoast-1.6.1/pycoast/tests/western_shapes_pil.png +0 -0
- pycoast-1.6.1/pycoast.egg-info/PKG-INFO +0 -65
- pycoast-1.6.1/pycoast.egg-info/SOURCES.txt +0 -89
- {pycoast-1.6.1 → pycoast-1.7.0}/LICENSE.txt +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/README +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/api/.gitkeep +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/conf.py +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/config.rst +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/graticule.rst +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/high_quality_contours.rst +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/BMNG_clouds_201109181715_areaT2.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/brazil_shapefiles_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/euro_coast.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/euro_coast_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/euro_coast_grid_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/euro_grid.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/euro_grid_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/geos_coast.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/geos_coast_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/grid_geos_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/nh_grid_coarse_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/nh_points_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/nh_polygons_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/images/nh_polygons_lines_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/index.rst +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/points.rst +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/polygons_and_lines.rst +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/shapefiles.rst +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/test.rst +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/docs/source/usage.rst +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/cw_pil.py +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/__init__.py +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/brazil_shapefiles.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/brazil_shapefiles_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/contours_europe.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/contours_europe_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/contours_europe_alpha.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/contours_geos.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/contours_geos_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/dateline_boundary_cross.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/dateline_cross.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/grid_europe.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/grid_europe_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/grid_geos.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/grid_geos_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/grid_nh.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/nh_cities_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/nh_cities_from_dict_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/nh_cities_from_dict_pil.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/nh_cities_pil.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/nh_points_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/nh_points_cfg_pil.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/nh_points_pil.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/nh_polygons.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/nh_polygons_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/one_shapefile_from_cfg_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/one_shapefile_from_cfg_pil.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/two_shapefiles_agg.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast/tests/two_shapefiles_pil.png +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast.egg-info/dependency_links.txt +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast.egg-info/not-zip-safe +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pycoast.egg-info/top_level.txt +0 -0
- {pycoast-1.6.1 → pycoast-1.7.0}/pyproject.toml +0 -0
pycoast-1.7.0/AUTHORS.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Project Contributors
|
|
2
|
+
|
|
3
|
+
The following people have made contributions to this project:
|
|
4
|
+
|
|
5
|
+
<!--- Use your GitHub account or any other personal reference URL --->
|
|
6
|
+
<!--- See https://gist.github.com/djhoese/52220272ec73b12eb8f4a29709be110d for auto-generating parts of this list --->
|
|
7
|
+
|
|
8
|
+
- Stefano Cerino
|
|
9
|
+
- [Andrew Brooks (howff)](https://github.com/howff)
|
|
10
|
+
- [Adam Dybbroe (adybbroe)](https://github.com/adybbroe)
|
|
11
|
+
- [David Hoese (djhoese)](https://github.com/djhoese)
|
|
12
|
+
- [Katja Hungershofer (khunger)](https://github.com/khunger)
|
|
13
|
+
- [Mikhail Itkin (mitkin)](https://github.com/mitkin)
|
|
14
|
+
- [Panu Lahtinen (pnuu)](https://github.com/pnuu)
|
|
15
|
+
- [Ernst Lobsiger (lobsiger)](https://github.com/lobsiger)
|
|
16
|
+
- [Esben S. Nielsen (storpipfugl)](https://github.com/storpipfugl)
|
|
17
|
+
- [Martin Raspaud (mraspaud)](https://github.com/mraspaud)
|
|
18
|
+
- [Hrobjartur Thorsteinsson (thorsteinssonh)](https://github.com/thorsteinssonh)
|
|
19
|
+
- [Antonio Valentino (avalentino)](https://github.com/avalentino)
|
|
20
|
+
- [Yufei Zhu (yufeizhu600)](https://github.com/yufeizhu600)
|
pycoast-1.7.0/PKG-INFO
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: pycoast
|
|
3
|
+
Version: 1.7.0
|
|
4
|
+
Summary: Writing of coastlines, borders and rivers to images in Python
|
|
5
|
+
Home-page: UNKNOWN
|
|
6
|
+
Author: Esben S. Nielsen
|
|
7
|
+
Author-email: esn@dmi.dk
|
|
8
|
+
License: UNKNOWN
|
|
9
|
+
Platform: UNKNOWN
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: Topic :: Scientific/Engineering
|
|
16
|
+
Requires-Python: >3.9
|
|
17
|
+
Provides-Extra: docs
|
|
18
|
+
Provides-Extra: tests
|
|
19
|
+
License-File: LICENSE.txt
|
|
20
|
+
License-File: AUTHORS.md
|
|
21
|
+
|
|
22
|
+
PyCoast
|
|
23
|
+
=======
|
|
24
|
+
|
|
25
|
+
.. image:: https://github.com/pytroll/pycoast/workflows/CI/badge.svg?branch=main
|
|
26
|
+
:target: https://github.com/pytroll/pycoast/actions?query=workflow%3A%22CI%22
|
|
27
|
+
|
|
28
|
+
.. image:: https://coveralls.io/repos/github/pytroll/pycoast/badge.svg?branch=main
|
|
29
|
+
:target: https://coveralls.io/github/pytroll/pycoast?branch=main
|
|
30
|
+
|
|
31
|
+
.. image:: https://img.shields.io/pypi/v/pycoast.svg
|
|
32
|
+
:target: https://pypi.python.org/pypi/pycoast
|
|
33
|
+
|
|
34
|
+
.. image:: https://results.pre-commit.ci/badge/github/pytroll/pycoast/main.svg
|
|
35
|
+
:target: https://results.pre-commit.ci/latest/github/pytroll/pycoast/main
|
|
36
|
+
:alt: pre-commit.ci status
|
|
37
|
+
|
|
38
|
+
Python package for adding coastlines, borders, rivers, lakes, cities, and other
|
|
39
|
+
overlays to raster images.
|
|
40
|
+
|
|
41
|
+
Installation
|
|
42
|
+
------------
|
|
43
|
+
|
|
44
|
+
PyCoast can be installed from PyPI using pip::
|
|
45
|
+
|
|
46
|
+
pip install pycoast
|
|
47
|
+
|
|
48
|
+
Or with conda using the conda-forge channel::
|
|
49
|
+
|
|
50
|
+
conda install -c conda-forge pycoast
|
|
51
|
+
|
|
52
|
+
Example
|
|
53
|
+
-------
|
|
54
|
+
|
|
55
|
+
::
|
|
56
|
+
|
|
57
|
+
>>> from PIL import Image
|
|
58
|
+
>>> from pycoast import ContourWriterAGG
|
|
59
|
+
>>> img = Image.open('BMNG_clouds_201109181715_areaT2.png')
|
|
60
|
+
>>> proj4_string = '+proj=stere +lon_0=8.00 +lat_0=50.00 +lat_ts=50.00 +ellps=WGS84'
|
|
61
|
+
>>> area_extent = (-3363403.31,-2291879.85,2630596.69,2203620.1)
|
|
62
|
+
>>> area_def = (proj4_string, area_extent)
|
|
63
|
+
>>> cw = ContourWriterAGG('/home/esn/data/gshhs')
|
|
64
|
+
>>> cw.add_coastlines(img, area_def, resolution='l', level=4)
|
|
65
|
+
>>> cw.add_rivers(img, area_def, level=5, outline='blue')
|
|
66
|
+
>>> cw.add_borders(img, area_def, outline=(255, 0, 0))
|
|
67
|
+
>>> img.show()
|
|
68
|
+
|
|
69
|
+
|
|
@@ -34,7 +34,7 @@ rivers, and lakes, shapefiles from the
|
|
|
34
34
|
installed. Download the zipped GSHHS and WDBII shapefiles. At the time of
|
|
35
35
|
writing the current zip file can be found at:
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
https://www.soest.hawaii.edu/pwessel/gshhg/gshhg-shp-2.3.7.zip
|
|
38
38
|
|
|
39
39
|
Unzip the files to a data directory (hereafter *DB_DATA_ROOT*).
|
|
40
40
|
The absolute path/name of this directory is called *db_root_path*
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""The conftest file."""
|
|
2
|
+
|
|
3
|
+
from pytest import hookimpl
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@hookimpl(tryfirst=True, hookwrapper=True)
|
|
7
|
+
def pytest_runtest_makereport(item, call):
|
|
8
|
+
"""Add test status in the report for fixtures to use."""
|
|
9
|
+
# execute all other hooks to obtain the report object
|
|
10
|
+
outcome = yield
|
|
11
|
+
rep = outcome.get_result()
|
|
12
|
+
# store test results for each phase of a call, which can
|
|
13
|
+
# be "setup", "call", "teardown"
|
|
14
|
+
setattr(item, "rep_" + rep.when, rep)
|
|
@@ -91,7 +91,11 @@ class ContourWriterAGG(ContourWriterBase):
|
|
|
91
91
|
):
|
|
92
92
|
"""Add a text box at position (x,y)."""
|
|
93
93
|
if box_outline is not None:
|
|
94
|
-
|
|
94
|
+
if hasattr(draw, "textsize"):
|
|
95
|
+
text_size = draw.textsize(text, font)
|
|
96
|
+
else:
|
|
97
|
+
left, top, right, bottom = draw.textbbox(text_position, text, font)
|
|
98
|
+
text_size = right - left, top - bottom
|
|
95
99
|
margin = 2
|
|
96
100
|
xUL = text_position[0] - margin
|
|
97
101
|
yUL = text_position[1]
|
|
@@ -29,9 +29,9 @@ import os
|
|
|
29
29
|
from typing import Generator
|
|
30
30
|
|
|
31
31
|
import numpy as np
|
|
32
|
-
import pyproj
|
|
33
32
|
import shapefile
|
|
34
33
|
from PIL import Image
|
|
34
|
+
from pyproj import CRS, Proj
|
|
35
35
|
|
|
36
36
|
try:
|
|
37
37
|
from pyresample import AreaDefinition
|
|
@@ -45,16 +45,11 @@ def get_resolution_from_area(area_def):
|
|
|
45
45
|
"""Get the best resolution for an area definition."""
|
|
46
46
|
x_size = area_def.width
|
|
47
47
|
y_size = area_def.height
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
x_ll, y_ll = prj(area_def.area_extent[0], area_def.area_extent[1])
|
|
51
|
-
x_ur, y_ur = prj(area_def.area_extent[2], area_def.area_extent[3])
|
|
52
|
-
x_resolution = (x_ur - x_ll) / x_size
|
|
53
|
-
y_resolution = (y_ur - y_ll) / y_size
|
|
54
|
-
else:
|
|
55
|
-
x_resolution = (area_def.area_extent[2] - area_def.area_extent[0]) / x_size
|
|
56
|
-
y_resolution = (area_def.area_extent[3] - area_def.area_extent[1]) / y_size
|
|
48
|
+
x_resolution = abs(area_def.area_extent[2] - area_def.area_extent[0]) / x_size
|
|
49
|
+
y_resolution = abs(area_def.area_extent[3] - area_def.area_extent[1]) / y_size
|
|
57
50
|
res = min(x_resolution, y_resolution)
|
|
51
|
+
if "degree" in area_def.crs.axis_info[0].unit_name:
|
|
52
|
+
res = _estimate_metered_resolution_from_degrees(area_def.crs, res)
|
|
58
53
|
|
|
59
54
|
if res > 25000:
|
|
60
55
|
return "c"
|
|
@@ -68,6 +63,12 @@ def get_resolution_from_area(area_def):
|
|
|
68
63
|
return "f"
|
|
69
64
|
|
|
70
65
|
|
|
66
|
+
def _estimate_metered_resolution_from_degrees(crs: CRS, resolution_degrees: float) -> float:
|
|
67
|
+
major_radius = crs.datum.ellipsoid.semi_major_metre
|
|
68
|
+
# estimate by taking the arc length using the radius
|
|
69
|
+
return major_radius * math.radians(resolution_degrees)
|
|
70
|
+
|
|
71
|
+
|
|
71
72
|
class _CoordConverter:
|
|
72
73
|
"""Convert coordinates from one space to in-bound image pixel column and row.
|
|
73
74
|
|
|
@@ -91,7 +92,8 @@ class _CoordConverter:
|
|
|
91
92
|
raise ValueError(f"'coord_ref' must be one of {pretty_coord_refs}.")
|
|
92
93
|
self._convert_method = convert_methods[coord_ref]
|
|
93
94
|
|
|
94
|
-
|
|
95
|
+
@staticmethod
|
|
96
|
+
def _check_area_def(area_def):
|
|
95
97
|
if AreaDefinition is None:
|
|
96
98
|
raise ImportError(
|
|
97
99
|
"Missing required 'pyresample' module, please "
|
|
@@ -130,16 +132,6 @@ def hash_dict(dict_to_hash: dict) -> str:
|
|
|
130
132
|
return dhash.hexdigest()
|
|
131
133
|
|
|
132
134
|
|
|
133
|
-
class Proj(pyproj.Proj):
|
|
134
|
-
"""Wrapper around pyproj to add in 'is_latlong'."""
|
|
135
|
-
|
|
136
|
-
def is_latlong(self):
|
|
137
|
-
if hasattr(self, "crs"):
|
|
138
|
-
return self.crs.is_geographic
|
|
139
|
-
# pyproj<2.0
|
|
140
|
-
return super(Proj, self).is_latlong()
|
|
141
|
-
|
|
142
|
-
|
|
143
135
|
class ContourWriterBase(object):
|
|
144
136
|
"""Base class for contourwriters. Do not instantiate.
|
|
145
137
|
|
|
@@ -167,7 +159,16 @@ class ContourWriterBase(object):
|
|
|
167
159
|
|
|
168
160
|
def _draw_text(self, draw, position, txt, font, align="cc", **kwargs):
|
|
169
161
|
"""Draw text with agg module."""
|
|
170
|
-
|
|
162
|
+
if hasattr(draw, "textsize"):
|
|
163
|
+
txt_width, txt_height = draw.textsize(txt, font)
|
|
164
|
+
else:
|
|
165
|
+
left, top, right, bottom = draw.textbbox(position, txt, font)
|
|
166
|
+
# bbox is based on "left ascender" anchor for horizontal text
|
|
167
|
+
# but does not include the ascender to top distance.
|
|
168
|
+
# In order to include that additional distance we take height from
|
|
169
|
+
# anchor (`position`) to the bottom of the text. See:
|
|
170
|
+
# https://pillow.readthedocs.io/en/stable/handbook/text-anchors.html#text-anchors
|
|
171
|
+
txt_width, txt_height = right - left, bottom - position[1]
|
|
171
172
|
x_pos, y_pos = position
|
|
172
173
|
ax, ay = align.lower()
|
|
173
174
|
if ax == "r":
|
|
@@ -178,7 +179,7 @@ class ContourWriterBase(object):
|
|
|
178
179
|
if ay == "b":
|
|
179
180
|
y_pos = y_pos - txt_height
|
|
180
181
|
elif ay == "c":
|
|
181
|
-
y_pos = y_pos -
|
|
182
|
+
y_pos = y_pos - txt_height / 2
|
|
182
183
|
|
|
183
184
|
self._engine_text_draw(draw, x_pos, y_pos, txt, font, **kwargs)
|
|
184
185
|
|
|
@@ -506,10 +507,15 @@ class ContourWriterBase(object):
|
|
|
506
507
|
the same provided AreaDefinition and parameters. Cached results are
|
|
507
508
|
identified by hashing the AreaDefinition and the overlays dictionary.
|
|
508
509
|
|
|
510
|
+
Note that if ``background`` is provided and caching is not used, the
|
|
511
|
+
result will be the final result of applying the overlays onto the
|
|
512
|
+
background. This is due to an optimization step avoiding creating a
|
|
513
|
+
separate overlay image in memory when it isn't needed.
|
|
514
|
+
|
|
509
515
|
.. warning::
|
|
510
516
|
|
|
511
517
|
Font objects are ignored in parameter hashing as they can't be easily hashed.
|
|
512
|
-
Therefore font changes will not trigger a new rendering for the cache.
|
|
518
|
+
Therefore, font changes will not trigger a new rendering for the cache.
|
|
513
519
|
|
|
514
520
|
:Parameters:
|
|
515
521
|
overlays : dict
|
|
@@ -1053,16 +1059,10 @@ def _get_bounding_box_lonlat_sides(area_extent, x_size, y_size, prj):
|
|
|
1053
1059
|
x_range = np.linspace(x_ll, x_ur, num=x_size)
|
|
1054
1060
|
y_range = np.linspace(y_ll, y_ur, num=y_size)
|
|
1055
1061
|
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
lons_s4, lats_s4 = x_range, y_ll * np.ones(x_range.size)
|
|
1061
|
-
else:
|
|
1062
|
-
lons_s1, lats_s1 = prj(np.ones(y_range.size) * x_ll, y_range, inverse=True)
|
|
1063
|
-
lons_s2, lats_s2 = prj(x_range, np.ones(x_range.size) * y_ur, inverse=True)
|
|
1064
|
-
lons_s3, lats_s3 = prj(np.ones(y_range.size) * x_ur, y_range, inverse=True)
|
|
1065
|
-
lons_s4, lats_s4 = prj(x_range, np.ones(x_range.size) * y_ll, inverse=True)
|
|
1062
|
+
lons_s1, lats_s1 = prj(np.ones(y_range.size) * x_ll, y_range, inverse=True)
|
|
1063
|
+
lons_s2, lats_s2 = prj(x_range, np.ones(x_range.size) * y_ur, inverse=True)
|
|
1064
|
+
lons_s3, lats_s3 = prj(np.ones(y_range.size) * x_ur, y_range, inverse=True)
|
|
1065
|
+
lons_s4, lats_s4 = prj(x_range, np.ones(x_range.size) * y_ll, inverse=True)
|
|
1066
1066
|
return (lons_s1, lons_s2, lons_s3, lons_s4), (lats_s1, lats_s2, lats_s3, lats_s4)
|
|
1067
1067
|
|
|
1068
1068
|
|
|
@@ -1087,12 +1087,7 @@ def _get_pixel_index(shape, area_extent, x_size, y_size, prj, x_offset=0, y_offs
|
|
|
1087
1087
|
shape_data = np.array(shape.points if hasattr(shape, "points") else shape)
|
|
1088
1088
|
lons = shape_data[:, 0]
|
|
1089
1089
|
lats = shape_data[:, 1]
|
|
1090
|
-
|
|
1091
|
-
if prj.is_latlong():
|
|
1092
|
-
x_ll, y_ll = prj(area_extent[0], area_extent[1])
|
|
1093
|
-
x_ur, y_ur = prj(area_extent[2], area_extent[3])
|
|
1094
|
-
else:
|
|
1095
|
-
x_ll, y_ll, x_ur, y_ur = area_extent
|
|
1090
|
+
x_ll, y_ll, x_ur, y_ur = area_extent
|
|
1096
1091
|
|
|
1097
1092
|
x, y = prj(lons, lats)
|
|
1098
1093
|
|
|
@@ -1199,7 +1194,7 @@ class _OverlaysFromDict:
|
|
|
1199
1194
|
foreground = Image.open(cache_file)
|
|
1200
1195
|
logger.info("Using image in cache %s", cache_file)
|
|
1201
1196
|
if background is not None:
|
|
1202
|
-
background
|
|
1197
|
+
_apply_cached_foreground_on_background(background, foreground)
|
|
1203
1198
|
return foreground
|
|
1204
1199
|
logger.info("Regenerating cache file.")
|
|
1205
1200
|
except OSError:
|
|
@@ -1212,7 +1207,7 @@ class _OverlaysFromDict:
|
|
|
1212
1207
|
except IOError as e:
|
|
1213
1208
|
logger.error("Can't save cache: %s", str(e))
|
|
1214
1209
|
if self._background is not None:
|
|
1215
|
-
self._background
|
|
1210
|
+
_apply_cached_foreground_on_background(self._background, self._foreground)
|
|
1216
1211
|
|
|
1217
1212
|
def _generate_cache_filename(self, cache_prefix, area_def, overlays_dict):
|
|
1218
1213
|
area_hash = hash(area_def)
|
|
@@ -1443,6 +1438,18 @@ class _OverlaysFromDict:
|
|
|
1443
1438
|
)
|
|
1444
1439
|
|
|
1445
1440
|
|
|
1441
|
+
def _apply_cached_foreground_on_background(background, foreground):
|
|
1442
|
+
premult_foreground = foreground.convert("RGBa")
|
|
1443
|
+
if background.mode == "RGBA":
|
|
1444
|
+
# Cached foreground and background are both RGBA, not extra conversions needed
|
|
1445
|
+
background.paste(premult_foreground, mask=premult_foreground)
|
|
1446
|
+
return
|
|
1447
|
+
background_rgba = background.convert("RGBA")
|
|
1448
|
+
background_rgba.paste(premult_foreground, mask=premult_foreground)
|
|
1449
|
+
# overwrite background image in place
|
|
1450
|
+
background.paste(background_rgba)
|
|
1451
|
+
|
|
1452
|
+
|
|
1446
1453
|
class _GridDrawer:
|
|
1447
1454
|
"""Helper for drawing graticule/grid lines."""
|
|
1448
1455
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
[coasts]
|
|
2
|
+
level = 4
|
|
3
|
+
resolution = l
|
|
4
|
+
outline = white
|
|
5
|
+
|
|
6
|
+
[grid]
|
|
7
|
+
write_text = True
|
|
8
|
+
lon_major = 10.0
|
|
9
|
+
lat_major = 10.0
|
|
10
|
+
lon_minor = 2.0
|
|
11
|
+
lat_minor = 2.0
|
|
12
|
+
minor_outline = blue
|
|
13
|
+
outline = blue
|
|
14
|
+
lon_placement = tblr
|
|
15
|
+
lat_placement = ''
|
|
16
|
+
font = 'test_data/DejaVuSerif.ttf'
|
|
17
|
+
font_size = 10
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
[coasts]
|
|
2
|
+
level = 4
|
|
3
|
+
resolution = l
|
|
4
|
+
outline = black
|
|
5
|
+
|
|
6
|
+
[borders]
|
|
7
|
+
level = 1
|
|
8
|
+
outline = black
|
|
9
|
+
width = 3
|
|
10
|
+
resolution = c
|
|
11
|
+
|
|
12
|
+
[cities]
|
|
13
|
+
# Backward compatibility: Allows for *ONE* type of cities
|
|
14
|
+
cities_list = Zurich, Oslo, Reykjavik, Fairbanks, Toronto
|
|
15
|
+
font = test_data/DejaVuSerif.ttf
|
|
16
|
+
font_size = 20
|
|
17
|
+
symbol = square
|
|
18
|
+
ptsize = 16
|
|
19
|
+
outline = black
|
|
20
|
+
width = 1
|
|
21
|
+
fill = blue
|
|
22
|
+
fill_opacity = 128
|
|
23
|
+
box_outline = blue
|
|
24
|
+
box_linewidth = 0.5
|
|
25
|
+
box_fill = yellow
|
|
26
|
+
box_opacity = 200
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[coasts]
|
|
2
|
+
level = 4
|
|
3
|
+
resolution = l
|
|
4
|
+
outline = black
|
|
5
|
+
|
|
6
|
+
[borders]
|
|
7
|
+
level = 1
|
|
8
|
+
outline = black
|
|
9
|
+
resolution = c
|
|
10
|
+
|
|
11
|
+
[cities]
|
|
12
|
+
# Backward compatibility: Allows for *ONE* type of cities
|
|
13
|
+
cities_list = Zurich, Oslo, Reykjavik, Fairbanks, Toronto
|
|
14
|
+
font = test_data/DejaVuSerif.ttf
|
|
15
|
+
font_size = 20
|
|
16
|
+
symbol = square
|
|
17
|
+
ptsize = 16
|
|
18
|
+
outline = black
|
|
19
|
+
fill = blue
|
|
20
|
+
box_outline = blue
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[coasts]
|
|
2
|
+
level = 4
|
|
3
|
+
resolution = l
|
|
4
|
+
outline = black
|
|
5
|
+
|
|
6
|
+
[borders]
|
|
7
|
+
level = 1
|
|
8
|
+
outline = black
|
|
9
|
+
width = 3
|
|
10
|
+
resolution = c
|
|
11
|
+
|
|
12
|
+
[points]
|
|
13
|
+
points_list = ((2.3522, 48.8566), 'Paris'), ((0.1278, 51.5074), 'London')
|
|
14
|
+
font = 'test_data/DejaVuSerif.ttf'
|
|
15
|
+
symbol = circle
|
|
16
|
+
ptsize = 16
|
|
17
|
+
outline = black
|
|
18
|
+
width = 3
|
|
19
|
+
fill = red
|
|
20
|
+
fill_opacity = 128
|
|
21
|
+
box_outline = blue
|
|
22
|
+
box_linewidth = 0.5
|
|
23
|
+
box_fill = yellow
|
|
24
|
+
box_opacity = 200
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[coasts]
|
|
2
|
+
level = 4
|
|
3
|
+
resolution = l
|
|
4
|
+
outline = black
|
|
5
|
+
|
|
6
|
+
[borders]
|
|
7
|
+
level = 1
|
|
8
|
+
outline = black
|
|
9
|
+
width = 3
|
|
10
|
+
resolution = c
|
|
11
|
+
|
|
12
|
+
[points]
|
|
13
|
+
points_list = ((13.4050, 52.5200), 'Berlin'), ((12.4964, 41.9028), 'Rome')
|
|
14
|
+
font = 'test_data/DejaVuSerif.ttf'
|
|
15
|
+
symbol = square
|
|
16
|
+
ptsize = 6
|
|
17
|
+
outline = red
|
|
18
|
+
fill = yellow
|
|
19
|
+
box_outline = black
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
X Bad Schwalbach Bad Schwalbach X 50.14196 8.06964
|
|
2
|
+
X Belp Belp X 46.89129 7.49825
|
|
3
|
+
X Berlin Berlin X 52.52437 13.41053
|
|
4
|
+
X Dublin Dublin X 53.33306 -6.24889
|
|
5
|
+
X Edinburgh Edinburgh X 55.95206 -3.19648
|
|
6
|
+
X Fairbanks Fairbanks X 64.83778 -147.71639
|
|
7
|
+
X Freiburg Freiburg X 47.9959 7.85222
|
|
8
|
+
X Hilversum Hilversum X 52.22333 5.17639
|
|
9
|
+
X Huesca Huesca X 42.13615 -0.4087
|
|
10
|
+
X London London X 42.98339 -81.23304
|
|
11
|
+
X London London X 51.50853 -0.12574
|
|
12
|
+
X Madrid Madrid X 40.4165 -3.70256
|
|
13
|
+
X Marseille Marseille X 43.29695 5.38107
|
|
14
|
+
X Montélimar Montelimar X 44.55468 4.75469
|
|
15
|
+
X Oslo Oslo X 59.91273 10.74609
|
|
16
|
+
X Paris Paris X 48.85341 2.3488
|
|
17
|
+
X Reykjavík Reykjavik X 64.13548 -21.89541
|
|
18
|
+
X Rome Rome X 41.89193 12.51133
|
|
19
|
+
X Toronto Toronto X 43.70011 -79.4163
|
|
20
|
+
X Zürich Zurich X 47.36667 8.55
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
|