├── .coveragerc ├── .flake8 ├── .gitattributes ├── .github ├── FUNDING.yml ├── dependabot.yml └── workflows │ ├── main.yml │ └── schemas.yml ├── .gitignore ├── .gitmodules ├── .readthedocs.yaml ├── CONTRIBUTING.md ├── LICENSE ├── MANIFEST.in ├── README.rst ├── code-of-conduct.md ├── docs ├── .gitignore ├── HISTORY.rst ├── Makefile ├── _static │ ├── foss4ge2017_mappyfile_sgirvin.pdf │ └── placeholder.txt ├── _templates │ └── placeholder.txt ├── api │ └── main.rst ├── client.rst ├── comments.rst ├── conf.py ├── development.rst ├── editing.rst ├── examples │ ├── after.map │ ├── animation │ │ ├── animated_buffer.map │ │ └── animated_buffer.py │ ├── api │ │ ├── accessing_values_test.py │ │ ├── adding_values_test.py │ │ ├── modifying_values_test.py │ │ ├── readme.py │ │ └── search_test.py │ ├── before.map │ ├── geometry │ │ ├── geometry.map │ │ └── geometry.py │ ├── helper.py │ ├── image_from_mapfile.py │ ├── pretty_printing.py │ ├── raster.map │ ├── read_symbolset.py │ ├── sample.json │ └── sample_json.py ├── format.txt ├── grammar.rst ├── images │ ├── OSGeo_community.png │ ├── OSGeo_community_small.png │ ├── animation.gif │ ├── banner.png │ ├── class_parsed.png │ ├── class_parsed_small.png │ ├── dilated.map │ ├── dilated.png │ ├── erosion.map │ ├── erosion.png │ ├── layer_classes.dot │ ├── layer_classes.png │ ├── layer_parsed.png │ ├── map_classes.dot │ ├── map_classes.png │ ├── mappyfile_modules.png │ ├── regex.png │ ├── roll-36697_1280.png │ ├── roll-36697_640.png │ ├── shapely.jpg │ ├── tree.png │ ├── tree_inlining.png │ ├── tree_no_terminals.png │ └── tree_noinlining.png ├── index.rst ├── make.bat ├── parser.rst ├── performance.txt ├── pretty_printing.rst ├── python_integration.rst ├── requirements.txt ├── rfc.rst ├── sample_dict.json ├── sample_map.txt ├── schemas.rst ├── schemas │ ├── mapfile-latest.json │ ├── mapfile-schema-7-6.json │ ├── mapfile-schema-8-0.json │ ├── mapfile-schema-8-2.json │ └── mapfile-schema-8-4.json ├── scripts │ ├── benchmarks.py │ ├── class_diagrams.py │ ├── create_diagram.py │ ├── grammar.py │ ├── make_json_schema.py │ ├── parsing.py │ └── xsdschema.py ├── testing.rst ├── transformer.rst ├── validate.txt ├── validation.rst └── validation_errors.txt ├── mappyfile.pyproj ├── mappyfile ├── __init__.py ├── cli.py ├── dictutils.py ├── mapfile.lark ├── ordereddict.py ├── parser.py ├── pprint.py ├── py.typed ├── quoter.py ├── schemas │ ├── TOCHECK.txt │ ├── class.json │ ├── cluster.json │ ├── color.json │ ├── composite.json │ ├── connectionoptions.json │ ├── debug.json │ ├── expression.json │ ├── extent.json │ ├── feature.json │ ├── grid.json │ ├── hex.json │ ├── hex2.json │ ├── join.json │ ├── label.json │ ├── layer.json │ ├── leader.json │ ├── legend.json │ ├── map.json │ ├── metadata.json │ ├── onoff.json │ ├── outputformat.json │ ├── points.json │ ├── position.json │ ├── projection.json │ ├── querymap.json │ ├── reference.json │ ├── rgb.json │ ├── scalebar.json │ ├── scaletoken.json │ ├── sizeunits.json │ ├── style.json │ ├── symbol.json │ ├── symbolset.json │ ├── units.json │ ├── validation.json │ ├── web.json │ └── yesno.json ├── tokens.py ├── transformer.py ├── utils.py └── validator.py ├── misc ├── __init__.py ├── docs_parser.py ├── test_docs_parser.py └── token_generator.py ├── pyproject.toml ├── requirements-dev.txt ├── run_local.ps1 ├── setup.cfg ├── setup.py ├── style.png ├── tests ├── __init__.py ├── errors_lark.log ├── issues.txt ├── mapfiles │ ├── itasca.map │ ├── itasca2.map │ ├── large_map1.map │ ├── large_map3.map │ ├── map4.map │ ├── map5.map │ ├── map6.map │ ├── map7.map │ ├── performance │ │ ├── run1-py27 │ │ │ ├── ReadMe.txt │ │ │ ├── itasca.map.txt │ │ │ ├── large_map1.map.txt │ │ │ ├── large_map2.map.txt │ │ │ ├── large_map3.map.txt │ │ │ ├── map4.map.txt │ │ │ ├── map5.map.txt │ │ │ ├── map6.map.txt │ │ │ └── map7.map.txt │ │ ├── run1-py36 │ │ │ ├── ReadMe.txt │ │ │ ├── itasca.map.txt │ │ │ ├── large_map1.map.txt │ │ │ ├── large_map2.map.txt │ │ │ ├── large_map3.map.txt │ │ │ ├── map4.map.txt │ │ │ ├── map5.map.txt │ │ │ ├── map6.map.txt │ │ │ └── map7.map.txt │ │ ├── run2-py27 │ │ │ ├── ReadMe.txt │ │ │ ├── itasca.map.txt │ │ │ ├── large_map1.map.txt │ │ │ ├── large_map2.map.txt │ │ │ ├── large_map3.map.txt │ │ │ ├── map4.map.txt │ │ │ ├── map5.map.txt │ │ │ ├── map6.map.txt │ │ │ └── map7.map.txt │ │ ├── run2-py36 │ │ │ ├── ReadMe.txt │ │ │ ├── itasca.map.txt │ │ │ ├── large_map1.map.txt │ │ │ ├── large_map2.map.txt │ │ │ ├── large_map3.map.txt │ │ │ ├── map4.map.txt │ │ │ ├── map5.map.txt │ │ │ ├── map6.map.txt │ │ │ └── map7.map.txt │ │ ├── run3-py27 │ │ │ ├── ReadMe.txt │ │ │ ├── itasca.map.txt │ │ │ ├── large_map1.map.txt │ │ │ ├── large_map2.map.txt │ │ │ ├── large_map3.map.txt │ │ │ ├── map4.map.txt │ │ │ ├── map5.map.txt │ │ │ ├── map6.map.txt │ │ │ └── map7.map.txt │ │ └── run3-py36 │ │ │ ├── ReadMe.txt │ │ │ ├── itasca.map.txt │ │ │ ├── large_map1.map.txt │ │ │ ├── large_map2.map.txt │ │ │ ├── large_map3.map.txt │ │ │ ├── map4.map.txt │ │ │ ├── map5.map.txt │ │ │ ├── map6.map.txt │ │ │ └── map7.map.txt │ └── profiler.py ├── sample_maps │ ├── 256_overlay_res.map │ ├── 256color_overdose.map │ ├── 256color_overdose_cmt.map │ ├── 256color_overdose_res.map │ ├── 5band.map │ ├── 6631.map │ ├── alpha_on_alpha_overlay.map │ ├── arithmetic_line.map │ ├── arithmetic_point.map │ ├── arithmetic_polygon.map │ ├── arithmetic_text.map │ ├── attrbind.map │ ├── autostyle.map │ ├── autostyle_quoted.map │ ├── average_rgb.map │ ├── average_rgb_plug.map │ ├── baseline_text.map │ ├── bdry_counpy2_mssql.map │ ├── bdry_counpy2_ogr.map │ ├── bdry_counpy2_postgis.map │ ├── bdry_counpy2_shapefile.map │ ├── bilinear_float.map │ ├── bilinear_left_right.map │ ├── bilinear_src_transp.map │ ├── bilinear_src_transp2.map │ ├── bug1526.map │ ├── centerline.map │ ├── centroid.map │ ├── chartlayer_bar.map │ ├── chartlayer_pie.map │ ├── chartlayer_pie2.map │ ├── chartlayer_pie_expressions.map │ ├── chartlayer_vbar.map │ ├── circle_layer.map │ ├── class16.map │ ├── class16_classify_scaled.map │ ├── class16_intoddscale.map │ ├── class16_ndmap.map │ ├── class16_oddscale.map │ ├── class16_range.map │ ├── class8_range.map │ ├── classtest1.map │ ├── classtest2.map │ ├── classtest2_plugin.map │ ├── cluster_mssql.map │ ├── compositing.map │ ├── connectionoptions.map │ ├── context.map │ ├── contour.map │ ├── contour_tileindex.map │ ├── contour_with_expr.map │ ├── dateline.map │ ├── deferred.map │ ├── embed_legend.map │ ├── embed_legend_rgba.map │ ├── embed_legend_rgba_tr.map │ ├── embed_legend_tr.map │ ├── embed_sb_rgb.map │ ├── embed_sb_rgb_tr.map │ ├── embed_sb_rgba.map │ ├── embed_sb_rgba_offset.map │ ├── embed_sb_rgba_tr.map │ ├── empty.map │ ├── encoding.map │ ├── entity_encoded_follow_text.map │ ├── expressions.map │ ├── filter.map │ ├── filtermap.map │ ├── filters.map │ ├── filters_mssql.map │ ├── filters_postgis.map │ ├── flatgeobuf-shapepath.map │ ├── flatgeobuf.map │ ├── font-fail.map │ ├── force_palette.map │ ├── force_palette_rgba.map │ ├── force_pc256.map │ ├── force_pc256_rgba.map │ ├── gd_png_256_res.map │ ├── gd_png_tr_256.map │ ├── gd_png_tr_256_res.map │ ├── gdal_png_256_res.map │ ├── gdal_png_tr_256.map │ ├── gdal_png_tr_256_res.map │ ├── geomtransform-vertex.map │ ├── geopdf.map │ ├── getstyles.map │ ├── getstyles_text.map │ ├── grayalpha.map │ ├── grayalpha_8bit.map │ ├── grayalpha_plug.map │ ├── grid.map │ ├── grid_without_label.map │ ├── heat.map │ ├── hello_world.map │ ├── helloworld-gif.map │ ├── idw.map │ ├── indx_q100kpy4_ogr.map │ ├── indx_q100kpy4_shapefile.map │ ├── issue5558.map │ ├── label-multifont.map │ ├── label.map │ ├── label_noclip.map │ ├── labelcacheoff.map │ ├── labelpnt.map │ ├── labelrot.map │ ├── labels-alignment.map │ ├── labels-anno.map │ ├── labels-attribute-alignment-offset.map │ ├── labels-bitmap-multiline.map │ ├── labels-bitmap.map │ ├── labels-leader.map │ ├── labels-min-distance.map │ ├── labels-priority.map │ ├── labels-wrap.map │ ├── labels.map │ ├── legend.map │ ├── legend_label_offset.map │ ├── legend_raster_gradient.map │ ├── legend_sizeunits_meters.map │ ├── line_aliased.map │ ├── line_anchorpoint.map │ ├── line_antialiased.map │ ├── line_label_auto.map │ ├── line_label_auto2.map │ ├── line_label_follow.map │ ├── line_label_follow_offsetted.map │ ├── line_label_follow_retry.map │ ├── line_marker_pixmap.map │ ├── line_marker_svg.map │ ├── line_marker_truetype.map │ ├── line_marker_vector.map │ ├── line_offset.map │ ├── line_offset_clipped_to_multiline.map │ ├── line_pattern.map │ ├── line_pattern_offset.map │ ├── line_short_gap.map │ ├── line_simple.map │ ├── linemark.map │ ├── listexpression.map │ ├── lon_wrap_180.map │ ├── lon_wrap_180_covering_more_than_360deg.map │ ├── lots_of_text.map │ ├── lut_1_crv.map │ ├── lut_float.map │ ├── lut_inline.map │ ├── lut_inline_12bits.map │ ├── lut_rgb_crv.map │ ├── map2img-size.map │ ├── marker_anchorpoint.map │ ├── marker_pixmap.map │ ├── mask.map │ ├── mask_1.map │ ├── mask_3.map │ ├── mask_opacity.map │ ├── maxfeatures.map │ ├── mode_tile.map │ ├── mssql_connection.map │ ├── multilabel-leader.map │ ├── multilabel.map │ ├── multipoint.map │ ├── nested_symbolset.map │ ├── nodata_8bit.map │ ├── nodata_rgb.map │ ├── nodata_scaled.map │ ├── nonsquare.map │ ├── nonsquare_multiraw.map │ ├── offsite_8bitgrey.map │ ├── offsite_pct_rgb.map │ ├── offsite_pct_rgb_torgb.map │ ├── ogcapi.map │ ├── ogr_attrfilter.map │ ├── ogr_connectionoptions.map │ ├── ogr_direct.map │ ├── ogr_empty_geojson.map │ ├── ogr_join.map │ ├── ogr_multi_defer.map │ ├── ogr_query.map │ ├── ogr_select.map │ ├── ogr_vrtconnect.map │ ├── ogr_wkt.map │ ├── ogrbrush.map │ ├── ogrmultitool.map │ ├── ogrpen.map │ ├── oracle.map │ ├── ortho.map │ ├── ows_all.map │ ├── ows_context.map │ ├── ows_disable.map │ ├── ows_empty.map │ ├── ows_metadata.map │ ├── ows_sos.map │ ├── ows_test_xml_escaping.map │ ├── ows_wcs.map │ ├── ows_wfs.map │ ├── ows_wms.map │ ├── ows_wms_rootlayer_name.map │ ├── ows_wms_rootlayer_name_empty.map │ ├── painter_reference.map │ ├── plb_embed_legend.map │ ├── plb_embed_legend_rgba.map │ ├── plb_embed_legend_rgba_tr.map │ ├── plb_embed_legend_tr.map │ ├── point-polaroffset.map │ ├── point_ellipse.map │ ├── point_pixmap.map │ ├── point_pixmap_gif.map │ ├── point_svg.map │ ├── point_truetype.map │ ├── point_vector.map │ ├── poly-label-multiline-pos-auto.map │ ├── poly-label-pos-auto.map │ ├── poly_geomtransform_anchor.map │ ├── polygon-as-line-offset.map │ ├── polygon-as-line.map │ ├── polygon-hatch-dashed.map │ ├── polygon-hatch.map │ ├── polygon-hex-alpha.map │ ├── polygon-pixmap.map │ ├── polygon-simple.map │ ├── polygon-ttf.map │ ├── polygon-vector.map │ ├── polyline_no_clip.map │ ├── processing_bands.map │ ├── processing_scale_auto.map │ ├── quantized.map │ ├── query.map │ ├── query_ogr.map │ ├── query_postgis.map │ ├── querymap.map │ ├── quoted_data.map │ ├── quoted_text.MAP │ ├── quoting.map │ ├── raster_simple.map │ ├── raster_simple_opacity.map │ ├── rawmode_multiband.map │ ├── rawmode_nodata.map │ ├── rawmode_nodata_resample.map │ ├── reference.map │ ├── reproj.map │ ├── reprojection.map │ ├── resolution.map │ ├── rfc14.map │ ├── rfc36.map │ ├── rfc36_ogr.map │ ├── rfc62.map │ ├── rgb_16bit.map │ ├── rgb_overlay.map │ ├── rgb_overlay_plug.map │ ├── rgb_overlay_res.map │ ├── rgb_overlay_res_to8bit.map │ ├── rgb_overlay_res_to8bit_dithered.map │ ├── rgba_overlay_res.map │ ├── rot_out.map │ ├── runtime_sub.map │ ├── scaletoken.map │ ├── simplealpha.map │ ├── simplealpha_bg.map │ ├── simplealpha_plug.map │ ├── size.map │ ├── sld_named_userstyle.map │ ├── sld_named_userstyle_get_styles.map │ ├── sld_named_userstyle_raster.map │ ├── sos.map │ ├── style-size.map │ ├── style_opacity.map │ ├── symbolrot.map │ ├── symbolrot_negative.map │ ├── symbolyzers.map │ ├── template.map │ ├── test.map │ ├── test_mapio.map │ ├── test_xmp.map │ ├── testuppercase.map │ ├── text-shaping.map │ ├── text.map │ ├── ticket_5032_optim_1.map │ ├── ticket_5032_optim_2.map │ ├── tileindex.map │ ├── tileindex_mi.map │ ├── tileindexmixedsrs.map │ ├── tileindexmixedsrs2.map │ ├── tileindexmixedsrs3.map │ ├── tileindexmixedsrs4.map │ ├── tomk_workshop.map │ ├── transparent_layer.map │ ├── trlay1.map │ ├── trlay2.map │ ├── trlay3.map │ ├── unclassified.map │ ├── union.map │ ├── uom.map │ ├── utfgrid-escaping.map │ ├── utfgrid_truetype_symbol.map │ ├── uvraster.map │ ├── uvraster_reproj.map │ ├── uvraster_reproj_expr_on_lon_lat.map │ ├── wcs_grib_input_output.map │ ├── wcs_grib_output.map │ ├── wcs_inspire_scenario1.map │ ├── wcs_inspire_scenario2.map │ ├── wcs_mask.map │ ├── wcs_multi.map │ ├── wcs_multiple_metadatalink.map │ ├── wcs_netcdf_3d_input_output.map │ ├── wcs_netcdf_3d_output.map │ ├── wcs_netcdf_input_output.map │ ├── wcs_post.map │ ├── wcs_simple.map │ ├── wcs_simple_layer_specific_option.map │ ├── wcs_tileindexlayer.map │ ├── wcs_tileindexmixedsrs.map │ ├── wfs_200.map │ ├── wfs_200_allgeoms.map │ ├── wfs_200_cite.map │ ├── wfs_200_cite_postgis.map │ ├── wfs_200_inspire.map │ ├── wfs_200_inspire_missing_md.map │ ├── wfs_200_inspire_scenario1.map │ ├── wfs_200_low_wfsmaxfeatures.map │ ├── wfs_200_low_wfsmaxfeatures_no_compute_number_matched.map │ ├── wfs_alltypes.map │ ├── wfs_autotypes_geopackage.map │ ├── wfs_autotypes_postgis.map │ ├── wfs_combined_filter.map │ ├── wfs_custom_projection.map │ ├── wfs_default_version_110.map │ ├── wfs_filter.map │ ├── wfs_filter_ogr.map │ ├── wfs_filter_postgis.map │ ├── wfs_filter_projmeter.map │ ├── wfs_group.map │ ├── wfs_misc.map │ ├── wfs_mssql.map │ ├── wfs_multi_geom_elements.map │ ├── wfs_multiple_metadataurl.map │ ├── wfs_ogr.map │ ├── wfs_ogr_25d.map │ ├── wfs_ogr_drv_nocreatedatasource.map │ ├── wfs_ogr_export.map │ ├── wfs_ogr_export_metadata.map │ ├── wfs_ogr_geojson.map │ ├── wfs_ogr_gpkg.map │ ├── wfs_ogr_invalid_filename.map │ ├── wfs_ogr_native_sql.map │ ├── wfs_ogr_no_native_sql.map │ ├── wfs_ogr_nonexistingdrv.map │ ├── wfs_ogr_tileindex_of_shp.map │ ├── wfs_ogr_tileindexmixedsrs.map │ ├── wfs_optional_items.map │ ├── wfs_postgis_10f_precision.map │ ├── wfs_postgis_25d.map │ ├── wfs_postgis_4f_precision.map │ ├── wfs_postgis_paging.map │ ├── wfs_query_cache.map │ ├── wfs_shape_tileindex_of_shp.map │ ├── wfs_shape_tileindexmixedsrs.map │ ├── wfs_simple.map │ ├── wfs_simple_ogr.map │ ├── wfs_test5299.map │ ├── wfs_time.map │ ├── wfs_time_ogr.map │ ├── wfs_time_postgis.map │ ├── wld_override.map │ ├── wld_rotate.map │ ├── wld_upsidedown.map │ ├── wms_client_111.map │ ├── wms_client_111_axis_fail.map │ ├── wms_client_130.map │ ├── wms_client_130_axis_fail.map │ ├── wms_custom_projection.map │ ├── wms_dimensions.map │ ├── wms_filter.map │ ├── wms_filter_color_bind.map │ ├── wms_getfeatureinfo_encoding.map │ ├── wms_getfeatureinfo_lon_wrap_180.map │ ├── wms_grid_reproj_to_3857.map │ ├── wms_inspire.map │ ├── wms_inspire_scenario1.map │ ├── wms_inspire_scenario2.map │ ├── wms_layer_groups.map │ ├── wms_legend.map │ ├── wms_multiple_metadataurl.map │ ├── wms_mvt.map │ ├── wms_north_polar_stereo_extent.map │ ├── wms_nosld.map │ ├── wms_nosld_postgis.map │ ├── wms_ogr_native_sql.map │ ├── wms_polar_stereo.map │ ├── wms_postgis_boxtoken.map │ ├── wms_raster.map │ ├── wms_simple.map │ ├── wms_simple_kml.map │ ├── wms_simple_postgis.map │ ├── wms_sld.map │ ├── wms_sld2.map │ ├── wms_sld_postgis.map │ ├── wms_sld_proj.map │ ├── wms_sld_validation.map │ ├── wms_src_non_square_pixel_ticket5445.map │ ├── wms_styles_expressions.map │ ├── wms_tiled.map │ ├── wms_tileindexmixedsrs.map │ ├── wms_time1.map │ ├── wms_time1_postgis.map │ ├── wms_time2.map │ ├── wms_time2_postgis.map │ ├── wms_time_pattern.map │ ├── wms_time_pattern_12_13_test.map │ ├── wms_time_pattern_12_13_test_postgis.map │ ├── wms_time_pattern_fail.map │ ├── wms_time_pattern_postgis.map │ ├── wms_uvraster_lonwrap180.map │ ├── wms_uvraster_map_reprojection.map │ ├── wmsclient.map │ ├── wmsclient_3543.map │ └── wmsclient_proj.map ├── samples │ ├── connection.map │ ├── include1.map │ ├── include1_nested_path.map │ ├── include1_recursive.map │ ├── include2.map │ ├── include2_recursive.map │ ├── include3.map │ ├── include3_recursive.map │ ├── include4.map │ ├── include4_recursive.map │ ├── include5_recursive.map │ ├── include6_recursive.map │ ├── include7_recursive.map │ ├── layers │ │ └── layer1.map │ ├── mapfile_include │ │ ├── include │ │ │ └── include3_nested_path.map │ │ └── include2_nested_path.map │ ├── new_c_comments.map │ ├── non_ascii.map │ ├── pmapper_demo.map │ └── unicode.map ├── test_cli.py ├── test_comments.py ├── test_config.py ├── test_dictutils.py ├── test_errors.py ├── test_expressions.py ├── test_includes.py ├── test_map_collection.py ├── test_msautotest.py ├── test_ordereddict.py ├── test_pprint.py ├── test_quoter.py ├── test_sample_maps.py ├── test_snippets.py ├── test_symbolset.py ├── test_transformer.py ├── test_utils.py └── test_validation.py └── tree.png /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | source=mappyfile 3 | -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | max-line-length = 160 3 | extend-ignore = E203,W503 4 | exclude = 5 | build, 6 | dist, 7 | misc, 8 | tests/mapfiles 9 | docs/_build 10 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: @geographika 4 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: pip 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | open-pull-requests-limit: 10 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /notes.private.txt 2 | /mappyfile.sln 3 | /mappyfile.v12.suo 4 | *.pyc 5 | cache 6 | /Notes.ignore.txt 7 | /.pypirc 8 | /build/* 9 | /dist/* 10 | /mappyfile.egg-info/* 11 | /prospector.log 12 | /docs/_build/* 13 | .pypirc 14 | /.vs/mappyfile/v15/.suo 15 | /.tox 16 | /.eggs 17 | /.vs/* 18 | /.venv 19 | /.coverage 20 | /tests/mapfiles/large_map2.map 21 | /.vscode 22 | /mappyfile.pyproj.user 23 | _build 24 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "tests/mapfiles/ms-ogc-workshop"] 2 | path = tests/mapfiles/ms-ogc-workshop 3 | url = https://github.com/mapserver/ms-ogc-workshop 4 | [submodule "tests/mapfiles/basemaps"] 5 | path = tests/mapfiles/basemaps 6 | url = https://github.com/mapserver/basemaps 7 | [submodule "tests/mapfiles/mapserver-demo"] 8 | path = tests/mapfiles/mapserver-demo 9 | url = https://github.com/mapserver/mapserver-demo 10 | -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | # .readthedocs.yaml 2 | # Read the Docs configuration file 3 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details 4 | 5 | # Required 6 | version: 2 7 | 8 | # Set the version of Python and other tools you might need 9 | build: 10 | os: ubuntu-22.04 11 | tools: 12 | python: "3.11" 13 | 14 | # Build documentation in the docs/ directory with Sphinx 15 | sphinx: 16 | configuration: docs/conf.py 17 | 18 | # We recommend specifying your dependencies to enable reproducible builds: 19 | # https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html 20 | 21 | python: 22 | install: 23 | - requirements: docs/requirements.txt 24 | # Install our python package before building the docs 25 | - method: pip 26 | path: . -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Seth Girvin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include README.rst LICENSE docs/* tests/*.py 2 | include mappyfile/schemas/*.json -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | /_build 2 | -------------------------------------------------------------------------------- /docs/_static/foss4ge2017_mappyfile_sgirvin.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/_static/foss4ge2017_mappyfile_sgirvin.pdf -------------------------------------------------------------------------------- /docs/_static/placeholder.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/_static/placeholder.txt -------------------------------------------------------------------------------- /docs/_templates/placeholder.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/_templates/placeholder.txt -------------------------------------------------------------------------------- /docs/examples/after.map: -------------------------------------------------------------------------------- 1 | MAP 2 | EXTENT -180 -90 180 90 3 | NAME "MyMap" 4 | WEB 5 | METADATA 6 | "wms_enable_request" "*" 7 | "wms_feature_info_mime_type" "text/html" 8 | END 9 | END 10 | PROJECTION 11 | "init=epsg:4326" 12 | END 13 | LAYER 14 | PROCESSING "BANDS=1" 15 | PROCESSING "CONTOUR_ITEM=elevation" 16 | PROCESSING "CONTOUR_INTERVAL=20" 17 | EXTENT -180 -90 180 90 18 | NAME "rgb" 19 | TYPE RASTER 20 | DATA "../data/raster/bluemarble.tif" 21 | TEMPLATE "raster.template.html" 22 | END 23 | END -------------------------------------------------------------------------------- /docs/examples/animation/animated_buffer.map: -------------------------------------------------------------------------------- 1 | MAP 2 | SIZE 256 256 3 | EXTENT 0 0 10 10 4 | OUTPUTFORMAT 5 | NAME "gif" 6 | DRIVER GD/GIF 7 | MIMETYPE "image/gif" 8 | IMAGEMODE PC256 9 | EXTENSION "gif" 10 | END 11 | LAYER 12 | NAME "polygon" 13 | STATUS ON 14 | TYPE POLYGON 15 | FEATURE 16 | END 17 | CLASS 18 | STYLE 19 | COLOR "#339933" 20 | OPACITY 50 21 | END 22 | END 23 | END 24 | LAYER 25 | STATUS ON 26 | NAME "grid" 27 | TYPE LINE 28 | CLASS 29 | NAME "Graticule" 30 | STYLE 31 | COLOR 0 0 0 32 | WIDTH 0.1 33 | END 34 | LABEL 35 | COLOR 50 50 50 36 | TYPE truetype 37 | SIZE 8 38 | POSITION AUTO 39 | PARTIALS FALSE 40 | BUFFER 2 41 | OUTLINECOLOR 255 255 255 42 | END 43 | END 44 | GRID 45 | LABELFORMAT "DD" 46 | MININTERVAL 80 47 | END 48 | END 49 | END -------------------------------------------------------------------------------- /docs/examples/api/accessing_values_test.py: -------------------------------------------------------------------------------- 1 | def test(): 2 | # START OF API EXAMPLE 3 | import mappyfile 4 | 5 | # open will accept a filename (mappyfile.loads will accept a string) 6 | mapfile = mappyfile.open("./docs/examples/raster.map") 7 | 8 | # print the map name 9 | print(mapfile["name"]) # "MyMap" 10 | 11 | # access layers 12 | layers = mapfile["layers"] 13 | layer2 = layers[1] # access by index 14 | 15 | # access classes in a layer 16 | classes = layer2["classes"] 17 | 18 | for c in classes: 19 | print(c["name"]) 20 | # END OF API EXAMPLE 21 | assert mapfile["name"] == "MyMap" 22 | 23 | 24 | if __name__ == "__main__": 25 | test() 26 | -------------------------------------------------------------------------------- /docs/examples/api/modifying_values_test.py: -------------------------------------------------------------------------------- 1 | import mappyfile 2 | 3 | 4 | def test(): 5 | mapfile = mappyfile.open("./docs/examples/raster.map") 6 | # START OF API EXAMPLE 7 | # update the map name 8 | mapfile["name"] = "MyNewMap" 9 | 10 | # update a layer name 11 | layers = mapfile["layers"] 12 | layer = layers[0] 13 | layer["name"] = "MyLayer" 14 | 15 | # update the error file path in the map config section 16 | # note key names can be lower or upper case 17 | 18 | mapfile["config"]["ms_errorfile"] = "/ms4w/tmp/ms_error.txt" 19 | 20 | # update the web metadata settings 21 | 22 | mapfile["web"]["metadata"]["wms_format"] = "image/png" 23 | print(mappyfile.dumps(mapfile["web"])) # print out just the WEB section 24 | 25 | # alternatively we can parse the Mapfile syntax and load it directly 26 | 27 | s = """ 28 | METADATA 29 | 'wms_enable_request' '*' 30 | 'wms_feature_info_mime_type' 'text/html' 31 | 'wms_format' 'image/jpg' 32 | END""" 33 | 34 | metadata = mappyfile.loads(s) 35 | mapfile["web"]["metadata"] = metadata 36 | print(mappyfile.dumps(mapfile)) 37 | 38 | # END OF API EXAMPLE 39 | assert layer["name"] == "MyLayer" 40 | assert mapfile["web"]["metadata"]["wms_format"] == "image/jpg" 41 | 42 | 43 | if __name__ == "__main__": 44 | test() 45 | -------------------------------------------------------------------------------- /docs/examples/api/readme.py: -------------------------------------------------------------------------------- 1 | import mappyfile 2 | 3 | mapfile = mappyfile.open("./docs/examples/raster.map") 4 | 5 | # update the map name 6 | mapfile["name"] = "MyNewMap" 7 | 8 | new_layer_string = """ 9 | LAYER 10 | NAME 'land' 11 | TYPE POLYGON 12 | DATA '../data/vector/naturalearth/ne_110m_land' 13 | CLASS 14 | STYLE 15 | COLOR 107 208 107 16 | OUTLINECOLOR 2 2 2 17 | WIDTH 1 18 | END 19 | END 20 | END 21 | """ 22 | 23 | layers = mapfile["layers"] 24 | 25 | new_layer = mappyfile.loads(new_layer_string) 26 | 27 | layers.insert(0, new_layer) # insert the new layer at any index in the Mapfile 28 | 29 | for lyr in layers: 30 | print("{} {}".format(lyr["name"], lyr["type"])) 31 | 32 | print(mappyfile.dumps(mapfile, indent=1, spacer="\t")) 33 | -------------------------------------------------------------------------------- /docs/examples/api/search_test.py: -------------------------------------------------------------------------------- 1 | import mappyfile 2 | 3 | 4 | def test(): 5 | # START OF API EXAMPLE 6 | # load will accept a filename (loads will accept a string) 7 | mapfile = mappyfile.open("./docs/examples/raster.map") 8 | 9 | # search for a layer by name 10 | layer = mappyfile.find(mapfile["layers"], "name", "sea") 11 | print(layer["name"]) # "sea" 12 | 13 | # search for all layers in a group 14 | for layer in mappyfile.findall(mapfile["layers"], "group", "my_group"): 15 | print(layer["name"]) 16 | 17 | # END OF API EXAMPLE 18 | assert layer["name"] == "sea" 19 | 20 | 21 | if __name__ == "__main__": 22 | test() 23 | -------------------------------------------------------------------------------- /docs/examples/before.map: -------------------------------------------------------------------------------- 1 | map 2 | /** 3 | Some comments 4 | */ 5 | EXTENT -180 -90 180 90 6 | NAME "MyMap" 7 | WEB 8 | metadata 9 | 'wms_enable_request' '*' 10 | 'wms_feature_info_mime_type' 'text/html' # this is required to return the content-type for GetFeatureInfo requests 11 | END 12 | END 13 | 14 | PROJECTION 15 | "init=epsg:4326" 16 | END 17 | # START OF THE LAYER DEFINITION 18 | LAYER 19 | PROCESSING 'BANDS=1' 20 | PROCESSING 'CONTOUR_ITEM=elevation' 21 | PROCESSING 'CONTOUR_INTERVAL=20' 22 | EXTENT -180 -90 180 90 # set this here as it is not stored in the image 23 | NAME "rgb" 24 | TYPE RASTER 25 | DATA '../data/raster/bluemarble.tif' 26 | TEMPLATE 'raster.template.html' 27 | END 28 | END -------------------------------------------------------------------------------- /docs/examples/geometry/geometry.map: -------------------------------------------------------------------------------- 1 | MAP 2 | SIZE 400 400 3 | EXTENT 0 0 10 10 4 | LAYER 5 | NAME "polygon" 6 | STATUS ON 7 | TYPE POLYGON 8 | FEATURE 9 | END 10 | CLASS 11 | STYLE 12 | COLOR "#6699cc" 13 | OUTLINECOLOR "#96aed0" 14 | WIDTH 3 15 | OPACITY 50 16 | END 17 | END 18 | END 19 | LAYER 20 | NAME "line" 21 | STATUS ON 22 | TYPE LINE 23 | FEATURE 24 | END 25 | CLASS 26 | STYLE 27 | COLOR "#7e98b1" 28 | WIDTH 5 29 | END 30 | END 31 | END 32 | LAYER 33 | STATUS ON 34 | NAME "grid" 35 | TYPE LINE 36 | CLASS 37 | NAME "Graticule" 38 | STYLE 39 | COLOR 0 0 0 40 | WIDTH 0.1 41 | END 42 | LABEL 43 | COLOR 50 50 50 44 | TYPE truetype 45 | SIZE 8 46 | POSITION AUTO 47 | PARTIALS FALSE 48 | BUFFER 2 49 | OUTLINECOLOR 255 255 255 50 | END 51 | END 52 | GRID 53 | LABELFORMAT "DDMM" 54 | MAXARCS 5 55 | MININTERVAL 2 56 | END 57 | END 58 | END -------------------------------------------------------------------------------- /docs/examples/helper.py: -------------------------------------------------------------------------------- 1 | import os 2 | from subprocess import Popen, PIPE 3 | import mappyfile 4 | 5 | DLL_LOCATION = r"C:\MapServer\bin" 6 | 7 | 8 | def create_image(name, mapfile, output_folder, format="png"): 9 | out_map = os.path.join(output_folder, "%s.map" % name) 10 | mappyfile.save(mapfile, out_map) 11 | 12 | out_img = os.path.join(output_folder, name) 13 | 14 | return _create_image_from_map(out_map, out_img, format=format) 15 | 16 | 17 | def _create_image_from_map(map_file, out_img, format): 18 | out_img += ".%s" % format 19 | # print out_img 20 | params = ["shp2img", "-m", map_file, "-i", format, "-o", out_img] 21 | 22 | os.environ["PATH"] = DLL_LOCATION + ";" + os.environ["PATH"] 23 | 24 | p = Popen(params, stdout=PIPE, bufsize=1) 25 | with p.stdout: 26 | for line in iter(p.stdout.readline, b""): 27 | print(line) 28 | 29 | p.wait() # wait for the subprocess to exit 30 | 31 | # os.startfile(out_img) 32 | return out_img 33 | -------------------------------------------------------------------------------- /docs/examples/image_from_mapfile.py: -------------------------------------------------------------------------------- 1 | from subprocess import Popen, PIPE 2 | import tempfile 3 | import logging 4 | import os 5 | 6 | 7 | def create_image_from_map(map_file, dll_location): 8 | of = tempfile.NamedTemporaryFile(delete=False, suffix=".png", prefix="tmp_") 9 | of.close() 10 | 11 | logging.debug("Creating file %s", of.name) 12 | # [SHP2IMG] -m [MAPFILE] -i png -o [RESULT] 13 | params = ["shp2img", "-m", map_file, "-i", "png", "-o", of.name] 14 | 15 | os.environ["PATH"] = dll_location + ";" + os.environ["PATH"] 16 | os.environ["PROJ_LIB"] = os.path.join(dll_location, r"proj\SHARE") 17 | 18 | logging.debug(" ".join(params)) 19 | 20 | p = Popen(params, stdout=PIPE, bufsize=1) 21 | with p.stdout: 22 | print(map_file) 23 | for line in iter(p.stdout.readline, b""): 24 | print(line) 25 | 26 | p.wait() # wait for the subprocess to exit 27 | 28 | os.startfile(of.name) 29 | 30 | 31 | if __name__ == "__main__": 32 | logging.basicConfig(level=logging.DEBUG) 33 | mf = r"D:\GitHub\mapserver\msautotest\gdal\256_overlay_res.map" 34 | dll_location = r"C:\MapServer\bin" 35 | create_image_from_map(mf, dll_location) # fn for original map 36 | print("Done!") 37 | -------------------------------------------------------------------------------- /docs/examples/pretty_printing.py: -------------------------------------------------------------------------------- 1 | import mappyfile 2 | 3 | mf = mappyfile.open("./docs/examples/before.map") 4 | mappyfile.save(mf, "./docs/examples/after.map") 5 | -------------------------------------------------------------------------------- /docs/examples/read_symbolset.py: -------------------------------------------------------------------------------- 1 | from mappyfile.pprint import PrettyPrinter 2 | 3 | import mappyfile 4 | 5 | fn = r"D:\TFS\hymo\mapfiles\symbols\symbols.sym" 6 | mf = mappyfile.open(fn) 7 | pp = PrettyPrinter() 8 | print(pp.pprint(mf)) 9 | -------------------------------------------------------------------------------- /docs/examples/sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "map", 3 | "extent": [ 4 | -180, 5 | -90, 6 | 180, 7 | 90 8 | ], 9 | "name": "MyMap", 10 | "web": { 11 | "__type__": "web", 12 | "metadata": { 13 | "wms_enable_request": "*", 14 | "wms_feature_info_mime_type": "text/html", 15 | "__type__": "metadata" 16 | } 17 | }, 18 | "projection": [ 19 | "init=epsg:4326" 20 | ], 21 | "layers": [ 22 | { 23 | "__type__": "layer", 24 | "processing": [ 25 | "BANDS=1", 26 | "CONTOUR_ITEM=elevation", 27 | "CONTOUR_INTERVAL=20" 28 | ], 29 | "extent": [ 30 | -180, 31 | -90, 32 | 180, 33 | 90 34 | ], 35 | "name": "rgb", 36 | "type": "RASTER", 37 | "data": "../data/raster/bluemarble.tif", 38 | "template": "raster.template.html" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /docs/examples/sample_json.py: -------------------------------------------------------------------------------- 1 | import mappyfile 2 | import json 3 | 4 | mf = mappyfile.open("./docs/examples/after.map") 5 | 6 | with open("./docs/examples/sample.json", "w") as f: 7 | json.dump(mf, f, indent=4) 8 | -------------------------------------------------------------------------------- /docs/images/OSGeo_community.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/OSGeo_community.png -------------------------------------------------------------------------------- /docs/images/OSGeo_community_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/OSGeo_community_small.png -------------------------------------------------------------------------------- /docs/images/animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/animation.gif -------------------------------------------------------------------------------- /docs/images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/banner.png -------------------------------------------------------------------------------- /docs/images/class_parsed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/class_parsed.png -------------------------------------------------------------------------------- /docs/images/class_parsed_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/class_parsed_small.png -------------------------------------------------------------------------------- /docs/images/dilated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/dilated.png -------------------------------------------------------------------------------- /docs/images/erosion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/erosion.png -------------------------------------------------------------------------------- /docs/images/layer_classes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/layer_classes.png -------------------------------------------------------------------------------- /docs/images/layer_parsed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/layer_parsed.png -------------------------------------------------------------------------------- /docs/images/map_classes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/map_classes.png -------------------------------------------------------------------------------- /docs/images/mappyfile_modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/mappyfile_modules.png -------------------------------------------------------------------------------- /docs/images/regex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/regex.png -------------------------------------------------------------------------------- /docs/images/roll-36697_1280.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/roll-36697_1280.png -------------------------------------------------------------------------------- /docs/images/roll-36697_640.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/roll-36697_640.png -------------------------------------------------------------------------------- /docs/images/shapely.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/shapely.jpg -------------------------------------------------------------------------------- /docs/images/tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/tree.png -------------------------------------------------------------------------------- /docs/images/tree_inlining.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/tree_inlining.png -------------------------------------------------------------------------------- /docs/images/tree_no_terminals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/tree_no_terminals.png -------------------------------------------------------------------------------- /docs/images/tree_noinlining.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/docs/images/tree_noinlining.png -------------------------------------------------------------------------------- /docs/python_integration.rst: -------------------------------------------------------------------------------- 1 | Integrating with Python 2 | ======================= 3 | 4 | This page gives some examples of integrating mappyfile into Python based work flows. 5 | 6 | Displaying Geometry 7 | ------------------- 8 | 9 | The examples below recreates the sample images used in the `Shapely documentation `_. 10 | 11 | See :download:`geometry.py ` and :download:`geometry.map `. 12 | 13 | .. image:: images/shapely.jpg 14 | 15 | .. code-block:: python 16 | 17 | mapfile["size"] = [600, 600] 18 | 19 | Dilated 20 | +++++++ 21 | 22 | .. literalinclude:: examples/geometry/geometry.py 23 | :pyobject: dilation 24 | 25 | .. image:: images/dilated.png 26 | :scale: 80% 27 | 28 | Eroded 29 | ++++++ 30 | 31 | .. literalinclude:: examples/geometry/geometry.py 32 | :pyobject: erosion 33 | 34 | .. image:: images/erosion.png 35 | :scale: 80% 36 | 37 | Animated Buffers 38 | ---------------- 39 | 40 | .. image:: images/animation.gif 41 | 42 | See :download:`animated_buffer.py ` and :download:`animated_buffer.map `. 43 | 44 | .. 45 | Colormaps http://matplotlib.org/cmocean/ 46 | https://pypi.python.org/pypi/colour -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | Sphinx==8.1.3 -------------------------------------------------------------------------------- /docs/sample_map.txt: -------------------------------------------------------------------------------- 1 | MAP 2 | WEB 3 | METADATA 4 | 'wms_enable_request' '*' 5 | END 6 | END 7 | PROJECTION 8 | 'proj=utm' 9 | 'ellps=GRS80' 10 | 'datum=NAD83' 11 | 'zone=15' 12 | 'units=m' 13 | 'north' 14 | 'no_defs' 15 | END 16 | LAYER 17 | NAME 'Layer1' 18 | CLASS 19 | NAME 'Class1' 20 | STYLE 21 | COLOR 99 231 117 22 | WIDTH 1 23 | END 24 | STYLE 25 | NAME 'MyStyle' 26 | COLOR 108 201 187 27 | WIDTH 2 28 | END 29 | END 30 | FEATURE 31 | POINTS 32 | 0 100 33 | 100 200 34 | 40 90 35 | END 36 | END 37 | END 38 | LAYER 39 | NAME 'Layer2' 40 | PROCESSING 'BANDS=1' 41 | PROCESSING 'CONTOUR_ITEM=elevation' 42 | PROCESSING 'CONTOUR_INTERVAL=20' 43 | END 44 | END -------------------------------------------------------------------------------- /docs/scripts/benchmarks.py: -------------------------------------------------------------------------------- 1 | """ 2 | python -m timeit -n 10 -s "import mappyfile" "mappyfile.open(r'tests/mapfiles/large_map1.map')" 3 | 4 | With lark_cython: 5 | 10 loops, best of 5: 245 msec per loop 6 | 7 | With lark: 8 | 10 loops, best of 5: 274 msec per loop 9 | 10 | """ 11 | 12 | import timeit 13 | 14 | N = 100 15 | 16 | t = timeit.timeit( 17 | stmt="mappyfile.open(mf)", 18 | setup="import mappyfile; mf=r'tests/mapfiles/large_map1.map'", 19 | number=N, 20 | ) 21 | 22 | print(t / N) 23 | -------------------------------------------------------------------------------- /docs/scripts/create_diagram.py: -------------------------------------------------------------------------------- 1 | from mappyfile.parser import Parser 2 | import os 3 | 4 | GVIZ_PATH = r"C:\Program Files (x86)\Graphviz2.38\bin" 5 | 6 | 7 | def graphviz_setup(): 8 | os.environ["PATH"] = GVIZ_PATH + ";" + os.environ["PATH"] 9 | 10 | 11 | def create_layer_diagram(): 12 | s = """ 13 | CLASS 14 | text "country name" 15 | NAME "test1" 16 | STYLE 17 | COLOR 180 180 180 18 | END 19 | END 20 | """ 21 | 22 | p = Parser() 23 | ast = p.parse(s) 24 | 25 | of = "./docs/images/class_parsed.png" 26 | 27 | ast.to_png_with_pydot(of) 28 | 29 | 30 | if __name__ == "__main__": 31 | create_layer_diagram() 32 | print("Done!") 33 | -------------------------------------------------------------------------------- /docs/scripts/grammar.py: -------------------------------------------------------------------------------- 1 | import os 2 | from lark import Lark 3 | 4 | from lark.tree import pydot__tree_to_png 5 | 6 | GVIZ_PATH = r"C:\Program Files (x86)\Graphviz2.38\bin" 7 | 8 | 9 | def graphviz_setup(): 10 | os.environ["PATH"] = GVIZ_PATH + ";" + os.environ["PATH"] 11 | 12 | 13 | def main(s, out_fn): 14 | graphviz_setup() 15 | project_root = os.path.normpath(os.path.join(os.path.dirname(__file__), "../../")) 16 | fld = os.path.normpath(project_root + "./mappyfile") 17 | gf = os.path.join(fld, "mapfile.lark") 18 | grammar_text = open(gf).read() 19 | 20 | g = Lark(grammar_text, parser="lalr", lexer="contextual") 21 | t = g.parse(s) 22 | print(t) 23 | pydot__tree_to_png(t, os.path.join(project_root, "docs/images", out_fn)) 24 | print(t.pretty()) 25 | 26 | 27 | s = "MAP NAME 'Test' END" 28 | # main(s, "tree.png") 29 | main(s, "tree_no_terminals.png") # remove ! from !composite_type rule 30 | print("Done!") 31 | -------------------------------------------------------------------------------- /docs/scripts/xsdschema.py: -------------------------------------------------------------------------------- 1 | r""" 2 | Use forked version to get lxml as a wheel 3 | pip install git+https://github.com/geographika/xsdtojson.git 4 | """ 5 | 6 | from xsdtojson import xsd_to_json_schema 7 | 8 | xsd_file = r"D:\GitHub\mapserver\xmlmapfile\mapfile.xsd" 9 | 10 | json_schema = xsd_to_json_schema(xsd_file) 11 | print(json_schema) 12 | -------------------------------------------------------------------------------- /docs/validate.txt: -------------------------------------------------------------------------------- 1 | Usage: mappyfile validate [OPTIONS] [MAPFILES]... 2 | 3 | Validate Mapfile(s) against the Mapfile schema 4 | 5 | The MAPFILES argument is a list of paths, either to individual Mapfiles, 6 | or a folders containing Mapfiles. Wildcards are supported (natively on 7 | Linux, and up to one level deep on Windows). Validation errors are 8 | reported to the console. The program returns the error count - this will 9 | be 0 if no validation errors are encountered. 10 | 11 | Example of validating a single Mapfile: 12 | 13 | mappyfile validate C:/Temp/valid.map 14 | 15 | Example of validating two folders containing Mapfiles, without expanding 16 | INCLUDES: 17 | 18 | mappyfile validate C:/Temp/*.map 19 | D:/GitHub/mappyfile/tests/mapfiles/*.map --no-expand 20 | 21 | Options: 22 | --expand / --no-expand Expand any INCLUDE directives found in the Mapfile 23 | [default: True] 24 | --help Show this message and exit. 25 | -------------------------------------------------------------------------------- /docs/validation_errors.txt: -------------------------------------------------------------------------------- 1 | C:/Temp/map1.map validated successfully 2 | C:/Temp/map2.map validated successfully 3 | C:/Temp/map3.map (Line: 16 Column: 3) ERROR: Invalid value in TYPE - u'polyline' is not one of [u'chart', u'circle', u'line', u'point', u'polygon', u'raster', u'query', u'annotation'] 4 | 3 file(s) validated (2 successfully) 5 | -------------------------------------------------------------------------------- /mappyfile/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/mappyfile/py.typed -------------------------------------------------------------------------------- /mappyfile/schemas/cluster.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": false, 4 | "patternProperties": { 5 | "^__[a-z]+__$": {} 6 | }, 7 | "properties": { 8 | "__type__": { 9 | "enum": [ "cluster" ] 10 | }, 11 | "include": { 12 | "type": "array", 13 | "items": { 14 | "type": "string" 15 | } 16 | }, 17 | "maxdistance": { 18 | "type": "number", 19 | "default": 10, 20 | "exclusiveMinimum": 0 21 | }, 22 | "region": { 23 | "oneOf": [ 24 | { 25 | "type": "string", 26 | "pattern": "^rectangle$" 27 | }, 28 | { 29 | "type": "string", 30 | "pattern": "^ellipse$" 31 | } 32 | ] 33 | }, 34 | "buffer": { 35 | "type": "number", 36 | "default": 0 37 | }, 38 | "group": { 39 | "$ref": "expression.json" 40 | }, 41 | "filter": { 42 | "$ref": "expression.json" 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /mappyfile/schemas/color.json: -------------------------------------------------------------------------------- 1 | { 2 | "oneOf": [ 3 | { 4 | "type": "array", 5 | "items": { 6 | "type": "number", 7 | "minimum": -1, 8 | "maximum": 255 9 | }, 10 | "minItems": 3, 11 | "maxItems": 3 12 | }, 13 | { 14 | "pattern": "^#([a-fA-F0-9]{6,8}|[a-fA-F0-9]{3,4})$", 15 | "example": "#aa33cc", 16 | "type": "string" 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /mappyfile/schemas/composite.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": false, 4 | "patternProperties": { 5 | "^__[a-z]+__$": {} 6 | }, 7 | "properties": { 8 | "__type__": { 9 | "enum": [ "composite" ] 10 | }, 11 | "include": { 12 | "type": "array", 13 | "items": { 14 | "type": "string" 15 | } 16 | }, 17 | "opacity": { 18 | "type": "integer", 19 | "minimum": 0, 20 | "maximum": 100 21 | }, 22 | "compfilter": { 23 | "type": "array", 24 | "items": { 25 | "type": "string" 26 | } 27 | }, 28 | "compop": { 29 | "type": "string", 30 | "enum": [ 31 | "clear", 32 | "color-burn", 33 | "color-dodge", 34 | "contrast", 35 | "darken", 36 | "difference", 37 | "dst", 38 | "dst-atop", 39 | "dst-in", 40 | "dst-out", 41 | "dst-over", 42 | "exclusion", 43 | "hard-light", 44 | "invert", 45 | "invert-rgb", 46 | "lighten", 47 | "minus", 48 | "multiply", 49 | "overlay", 50 | "plus", 51 | "screen", 52 | "soft-light", 53 | "src", 54 | "src-atop", 55 | "src-in", 56 | "src-out", 57 | "src-over", 58 | "xor" 59 | ] 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /mappyfile/schemas/connectionoptions.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | }, 5 | "additionalProperties": true, 6 | "metadata": { 7 | "minVersion": 7.6 8 | } 9 | } -------------------------------------------------------------------------------- /mappyfile/schemas/debug.json: -------------------------------------------------------------------------------- 1 | { 2 | "enum": [ "on", "off", 0, 1, 2, 3, 4, 5 ] 3 | } 4 | -------------------------------------------------------------------------------- /mappyfile/schemas/expression.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "type": "string" 5 | }, 6 | { 7 | "type": "string", 8 | "pattern": "^\\((.*?)\\)$", 9 | "description": "expression" 10 | }, 11 | { 12 | "type": "string", 13 | "pattern": "^/(.*?)/$", 14 | "description": "regex" 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /mappyfile/schemas/extent.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "array", 3 | "items": { 4 | "type": "number" 5 | }, 6 | "minItems": 4, 7 | "maxItems": 4 8 | } 9 | -------------------------------------------------------------------------------- /mappyfile/schemas/feature.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": false, 4 | "patternProperties": { 5 | "^__[a-z]+__$": {} 6 | }, 7 | "properties": { 8 | "__type__": { 9 | "enum": [ "feature" ] 10 | }, 11 | "include": { 12 | "type": "array", 13 | "items": { 14 | "type": "string" 15 | } 16 | }, 17 | "points": { 18 | "oneOf": [ 19 | { 20 | "type": "array", 21 | "items": { 22 | "$ref": "points.json" 23 | } 24 | }, 25 | { 26 | "$ref": "points.json" 27 | } 28 | ] 29 | }, 30 | "items": { 31 | "type": "string" 32 | }, 33 | "text": { 34 | "type": "string" 35 | }, 36 | "wkt": { 37 | "type": "string" 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /mappyfile/schemas/grid.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": false, 4 | "patternProperties": { 5 | "^__[a-z]+__$": {} 6 | }, 7 | "properties": { 8 | "__type__": { 9 | "enum": [ "grid" ] 10 | }, 11 | "include": { 12 | "type": "array", 13 | "items": { 14 | "type": "string" 15 | } 16 | }, 17 | "labelformat": { 18 | "anyOf": [ 19 | { 20 | "type": "string" 21 | }, 22 | { 23 | "enum": [ "dd", "ddmm", "ddmmss" ] 24 | } 25 | ] 26 | }, 27 | "minarcs": { 28 | "type": "number", 29 | "default": 16, 30 | "exclusiveMinimum": 0 31 | }, 32 | "maxarcs": { 33 | "type": "number", 34 | "exclusiveMinimum": 0 35 | }, 36 | "mininterval": { 37 | "type": "number", 38 | "exclusiveMinimum": 0 39 | }, 40 | "maxinterval": { 41 | "type": "number", 42 | "exclusiveMinimum": 0 43 | }, 44 | "minsubdivide": { 45 | "type": "number", 46 | "exclusiveMinimum": 0 47 | }, 48 | "maxsubdivide": { 49 | "type": "number", 50 | "default": 256, 51 | "exclusiveMinimum": 0 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /mappyfile/schemas/hex.json: -------------------------------------------------------------------------------- 1 | { 2 | "pattern": "^'#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'$", 3 | "example": "'#aa33cc'", 4 | "type": "string" 5 | } -------------------------------------------------------------------------------- /mappyfile/schemas/hex2.json: -------------------------------------------------------------------------------- 1 | { 2 | "pattern": "^\"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})\"$", 3 | "example": "'#aa33cc'", 4 | "type": "string" 5 | } -------------------------------------------------------------------------------- /mappyfile/schemas/join.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": false, 4 | "patternProperties": { 5 | "^__[a-z]+__$": {} 6 | }, 7 | "properties": { 8 | "__type__": { 9 | "enum": [ "join" ] 10 | }, 11 | "include": { 12 | "type": "array", 13 | "items": { 14 | "type": "string" 15 | } 16 | }, 17 | "connection": { 18 | "type": "string" 19 | }, 20 | "footer": { 21 | "type": "string", 22 | "description": "filename" 23 | }, 24 | "from": { 25 | "type": "string" 26 | }, 27 | "header": { 28 | "type": "string", 29 | "description": "filename" 30 | }, 31 | "name": { 32 | "type": "string" 33 | }, 34 | "table": { 35 | "type": "string" 36 | }, 37 | "template": { 38 | "type": "string", 39 | "description": "filename" 40 | }, 41 | "to": { 42 | "type": "string" 43 | }, 44 | "type": { 45 | "type": "string", 46 | "enum": [ "one-to-one", "one-to-many" ], 47 | "additionalProperties": false 48 | }, 49 | "connectiontype": { 50 | "type": "string", 51 | "enum": [ "csv", "mysql", "postgresql" ], 52 | "additionalProperties": false 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /mappyfile/schemas/leader.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": false, 4 | "patternProperties": { 5 | "^__[a-z]+__$": {} 6 | }, 7 | "properties": { 8 | "__type__": { 9 | "enum": [ "leader" ] 10 | }, 11 | "include": { 12 | "type": "array", 13 | "items": { 14 | "type": "string" 15 | } 16 | }, 17 | "gridstep": { 18 | "type": "integer", 19 | "exclusiveMinimum": 0 20 | }, 21 | "maxdistance": { 22 | "type": "integer" 23 | }, 24 | "styles": { 25 | "type": "array", 26 | "minItems": 1, 27 | "items": { 28 | "$ref": "style.json" 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /mappyfile/schemas/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | }, 5 | "additionalProperties": true 6 | } -------------------------------------------------------------------------------- /mappyfile/schemas/onoff.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "enum": ["on", "off" ] 4 | } -------------------------------------------------------------------------------- /mappyfile/schemas/outputformat.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": false, 4 | "patternProperties": { 5 | "^__[a-z]+__$": {} 6 | }, 7 | "properties": { 8 | "__type__": { 9 | "enum": [ "outputformat" ] 10 | }, 11 | "__comments__": { 12 | "type": "object" 13 | }, 14 | "__position__": { 15 | "type": "object" 16 | }, 17 | "include": { 18 | "type": "array", 19 | "items": { 20 | "type": "string" 21 | } 22 | }, 23 | "driver": { 24 | "type": "string" 25 | }, 26 | "extension": { 27 | "type": "string" 28 | }, 29 | "formatoption": { 30 | "type": "array", 31 | "items": { 32 | "type": "string" 33 | } 34 | }, 35 | "imagemode": { 36 | "type": "string", 37 | "enum": [ "pc256", "rgb", "rgba", "byte", "int16", "float32", "feature" ], 38 | "additionalProperties": false 39 | }, 40 | "mimetype": { 41 | "type": "string" 42 | }, 43 | "name": { 44 | "type": "string" 45 | }, 46 | "transparent": { 47 | "oneOf": [ 48 | { 49 | "type": "boolean" 50 | }, 51 | { 52 | "$ref": "onoff.json" 53 | } 54 | ] 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /mappyfile/schemas/points.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "array", 3 | "items": { 4 | "type": "array", 5 | "items": { 6 | "type": "number", 7 | "minItems": 2, 8 | "maxItems": 2 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /mappyfile/schemas/position.json: -------------------------------------------------------------------------------- 1 | { 2 | "enum": [ "ul", "uc", "ur", "cl", "cc", "cr", "ll", "lc", "lr" ] 3 | } -------------------------------------------------------------------------------- /mappyfile/schemas/projection.json: -------------------------------------------------------------------------------- 1 | { 2 | "oneOf": [ 3 | { 4 | "type": "array", 5 | "items": { 6 | "type": "string" 7 | }, 8 | "minItems": 1 9 | }, 10 | { "enum": [ "auto" ] } 11 | ] 12 | } -------------------------------------------------------------------------------- /mappyfile/schemas/querymap.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": false, 4 | "patternProperties": { 5 | "^__[a-z]+__$": {} 6 | }, 7 | "properties": { 8 | "__type__": { 9 | "enum": [ "querymap" ] 10 | }, 11 | "include": { 12 | "type": "array", 13 | "items": { 14 | "type": "string" 15 | } 16 | }, 17 | "color": { 18 | "$ref": "color.json" 19 | }, 20 | "size": { 21 | "default": [ -1, -1 ], 22 | "type": "array", 23 | "items": { 24 | "type": "integer", 25 | "minimum": -1 26 | }, 27 | "minItems": 2, 28 | "maxItems": 2 29 | }, 30 | "status": { 31 | "default": "off", 32 | "$ref": "onoff.json" 33 | }, 34 | "style": { 35 | "default": "hilite", 36 | "type": "string", 37 | "enum": [ "normal", "hilite", "selected" ], 38 | "additionalProperties": false 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /mappyfile/schemas/rgb.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "array", 3 | "items": { 4 | "type": "number", 5 | "minimum": 0, 6 | "maximum": 255 7 | }, 8 | "minItems": 3, 9 | "maxItems": 3 10 | } 11 | -------------------------------------------------------------------------------- /mappyfile/schemas/scaletoken.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "additionalProperties": false, 4 | "patternProperties": { 5 | "^__[a-z]+__$": {} 6 | }, 7 | "properties": { 8 | "__type__": { 9 | "enum": [ "scaletoken" ] 10 | }, 11 | "include": { 12 | "type": "array", 13 | "items": { 14 | "type": "string" 15 | } 16 | }, 17 | "name": { 18 | "type": "string" 19 | }, 20 | "values": { 21 | "type": "object", 22 | "properties": { 23 | }, 24 | "additionalProperties": true 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /mappyfile/schemas/sizeunits.json: -------------------------------------------------------------------------------- 1 | { 2 | "enum": ["feet", "inches", "kilometers", "meters", "miles", "nauticalmiles", "pixels"] 3 | } 4 | -------------------------------------------------------------------------------- /mappyfile/schemas/symbolset.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/schema#", 3 | "type": "object", 4 | "additionalProperties": false, 5 | "patternProperties": { 6 | "^__[a-z]+__$": {} 7 | }, 8 | "properties": { 9 | "symbols": { 10 | "type": "array", 11 | "items": { 12 | "type": "object", 13 | "$ref": "symbol.json" 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /mappyfile/schemas/units.json: -------------------------------------------------------------------------------- 1 | { 2 | "enum": [ "dd", "feet", "inches", "kilometers", "meters", "miles", "nauticalmiles"] 3 | } 4 | -------------------------------------------------------------------------------- /mappyfile/schemas/validation.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | }, 5 | "additionalProperties": true 6 | } -------------------------------------------------------------------------------- /mappyfile/schemas/yesno.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "string", 3 | "enum": [ "YES", "NO" ] 4 | } -------------------------------------------------------------------------------- /misc/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/misc/__init__.py -------------------------------------------------------------------------------- /misc/token_generator.py: -------------------------------------------------------------------------------- 1 | from mappyfile.tokens import COMPLEX_TYPES, SINGLETON_COMPOSITE_NAMES 2 | 3 | values = list(COMPLEX_TYPES) + list(SINGLETON_COMPOSITE_NAMES) 4 | values = list(map(str.upper, values)) 5 | print("|".join(sorted(set(values)))) 6 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | # black only uses the pyproject.toml so add settings here 2 | [tool.black] 3 | exclude = 'tests/mapfiles' 4 | 5 | [tool.mypy] 6 | exclude = [ 7 | 'tests/mapfiles' 8 | ] 9 | 10 | [[tool.mypy.overrides]] 11 | module = [ 12 | 'jsonref', 13 | 'glob2', 14 | 'lark_cython', 15 | 'PIL', 16 | 'shapely.geometry' 17 | ] 18 | ignore_missing_imports = true 19 | 20 | # Flake8 does not currently support pyproject.toml 21 | # without an additional dependency 22 | # see https://pypi.org/project/Flake8-pyproject/ 23 | 24 | # [tool.flake8] 25 | # max-line-length = 160 26 | # extend-ignore = ['E203','W503'] 27 | # exclude = [ 28 | # 'build', 29 | # 'dist', 30 | # 'misc', 31 | # 'tests/mapfiles', 32 | # 'docs/_build'] 33 | 34 | [tool.pytest.ini_options] 35 | testpaths = [ 36 | 'tests', 37 | 'docs/examples', 38 | ] 39 | # there is no ignore ini setting in pytest, but we can add command line options with addopts 40 | addopts = ['--ignore=tests/mapfiles'] 41 | # can remove the following as https://github.com/lark-parser/lark/pull/1285 has been merged 42 | filterwarnings = 'ignore::DeprecationWarning:lark.*' -------------------------------------------------------------------------------- /requirements-dev.txt: -------------------------------------------------------------------------------- 1 | colorama 2 | docutils 3 | flake8 4 | # git+git://github.com/lark-parser/lark.git#egg=lark 5 | pluggy 6 | py 7 | pydot 8 | pyparsing 9 | pytest 10 | pytest-cov 11 | virtualenv 12 | glob2 13 | coveralls 14 | sphinx 15 | black 16 | mypy 17 | types-jsonschema 18 | 19 | # for demo scripts 20 | Pillow 21 | shapely 22 | -------------------------------------------------------------------------------- /run_local.ps1: -------------------------------------------------------------------------------- 1 | # C:\Python310\python -m venv C:\VirtualEnvs\mappyfile3 2 | C:\VirtualEnvs\mappyfile313\Scripts\activate.ps1 3 | cd D:\GitHub\mappyfile 4 | 5 | # the following installs mappyfile with the optional lark_cython extension 6 | # pip install .[lark_cython] 7 | # pip install -r requirements-dev.txt 8 | 9 | black . 10 | flake8 . 11 | 12 | # mypy --install-types 13 | # to check within functions missing types 14 | # mypy mappyfile tests --check-untyped-defs 15 | mypy mappyfile tests 16 | 17 | pytest --doctest-modules 18 | # pytest ./tests -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [global] 2 | zip_safe= 3 | 4 | [bdist_wheel] 5 | universal = 1 6 | 7 | [metadata] 8 | description_file = README.rst 9 | license_files = LICENSE -------------------------------------------------------------------------------- /style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/style.png -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/tests/__init__.py -------------------------------------------------------------------------------- /tests/issues.txt: -------------------------------------------------------------------------------- 1 | # filters.map loadLayer(): Unknown identifier. Parsing error near (i):(line 15)
2 | # wms_inspire_scenario1.map UnicodeDecodeError: 'utf8' codec can't decode byte 0xdf in position 7851: invalid continuation byte 3 | 4 | 5 | IMAGEMODE [PC256/RGB/RGBA/INT16/FLOAT32/FEATURE] 6 | 7 | FEATURE a duplicated keyword 8 | 9 | VALIDATION block can have an attr or string 10 | 11 | OLD 12 | 13 | validation: VALIDATION NL+ ((attr NL+)+|(string NL*)+) END; 14 | 15 | NEW 16 | 17 | validation: VALIDATION NL+ ((string_pair|attr) NL+)+ END; 18 | 19 | Maps with problems: 20 | 21 | 22 | #parser = Parser() 23 | #ast = parser.parse_file('./tests/sample_maps/256_overlay_res.map') 24 | #ast = parser.parse_file('./tests/sample_maps/class16_oddscale.map') 25 | #ast = parser.parse_file('./tests/sample_maps/class16_range.map') 26 | #ast = parser.parse_file('./tests/sample_maps/wmsclient_3543.map') 27 | #ast = parser.parse_file('./tests/sample_maps/heat.map') 28 | 29 | #ast = parser.parse_file('./tests/sample_maps/labelpnt.map') 30 | #ast = parser.parse_file('./tests/sample_maps/maxfeatures.map') 31 | #ast = parser.parse_file('./tests/sample_maps/query.map') -------------------------------------------------------------------------------- /tests/mapfiles/performance/run1-py27/ReadMe.txt: -------------------------------------------------------------------------------- 1 | py27 2 | mappyfile==0.6.2 3 | lark-parser==0.5.3 -------------------------------------------------------------------------------- /tests/mapfiles/performance/run1-py36/ReadMe.txt: -------------------------------------------------------------------------------- 1 | py37 2 | mappyfile==0.6.2 3 | lark-parser==0.5.3 -------------------------------------------------------------------------------- /tests/mapfiles/performance/run2-py27/ReadMe.txt: -------------------------------------------------------------------------------- 1 | py27 2 | mappyfile==0.6.2 3 | lark-parser==0.5.5 -------------------------------------------------------------------------------- /tests/mapfiles/performance/run2-py36/ReadMe.txt: -------------------------------------------------------------------------------- 1 | py37 2 | mappyfile==0.6.2 3 | lark-parser==0.5.5 -------------------------------------------------------------------------------- /tests/mapfiles/performance/run3-py27/ReadMe.txt: -------------------------------------------------------------------------------- 1 | py37 2 | mappyfile==0.7.2 3 | lark-parser==0.6.2 -------------------------------------------------------------------------------- /tests/mapfiles/performance/run3-py36/ReadMe.txt: -------------------------------------------------------------------------------- 1 | py37 2 | mappyfile==0.7.2 3 | lark-parser==0.6.2 -------------------------------------------------------------------------------- /tests/sample_maps/256_overlay_res.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests overlaying an image with a transparent color on an opaque layer. 4 | # There should be plenty of free colors in this case. 5 | # 6 | # NOTE: with resampling, colormapped. 7 | # 8 | # REQUIRES: SUPPORTS=PROJ 9 | # 10 | MAP 11 | 12 | NAME TEST 13 | STATUS ON 14 | SIZE 400 300 15 | EXTENT 0.5 0.5 399.5 299.5 16 | IMAGECOLOR 255 255 0 17 | 18 | PROJECTION 19 | "proj=utm" 20 | "zone=12" 21 | "datum=WGS84" 22 | END 23 | 24 | IMAGETYPE png8_t 25 | 26 | OUTPUTFORMAT 27 | NAME png8_t 28 | DRIVER "GD/PNG" 29 | IMAGEMODE PC256 30 | TRANSPARENT OFF 31 | END 32 | 33 | LAYER 34 | NAME grey 35 | TYPE raster 36 | STATUS default 37 | DATA data/pct22.tif 38 | PROJECTION 39 | "proj=utm" 40 | "zone=12" 41 | "ellps=WGS84" 42 | "towgs84=1,0,0" 43 | END 44 | END 45 | 46 | LAYER 47 | NAME grid1 48 | TYPE raster 49 | STATUS default 50 | DATA data/grid.gif 51 | PROJECTION 52 | "proj=utm" 53 | "zone=12" 54 | "ellps=WGS84" 55 | "towgs84=1,0,0" 56 | END 57 | END 58 | 59 | END # of map file 60 | -------------------------------------------------------------------------------- /tests/sample_maps/256color_overdose.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests layering a layer with transparency on a layer with 256 colors already. 4 | # This is intended to address case where colors are exausted before a 5 | # transparent color can be allocated. 6 | # 7 | # NOTE: without resampling. 8 | # 9 | # ISSUE: The resulting image has the grid drawn in a grey color instead of 10 | # the natural red. This is because the colormap is full by the time 11 | # we get to allocating a color for the grid. This is an expected 12 | # "error" in the results. 13 | # 14 | # UPDATE: Now mapdrawgdal.c constructs a colortable for greyscale images 15 | # with only 128 entries instead of 256 so the "overload" no longer 16 | # happens. Preserve test with new results for posterity. 17 | # 18 | MAP 19 | 20 | NAME TEST 21 | STATUS ON 22 | SIZE 400 300 23 | EXTENT 0.5 0.5 399.5 299.5 24 | IMAGECOLOR 255 255 0 25 | 26 | IMAGETYPE png8_t 27 | 28 | OUTPUTFORMAT 29 | NAME png8_t 30 | DRIVER "GD/PNG" 31 | EXTENSION "png" 32 | MIMETYPE "image/png" 33 | IMAGEMODE PC256 34 | TRANSPARENT OFF 35 | END 36 | 37 | LAYER 38 | NAME grey 39 | TYPE raster 40 | STATUS default 41 | DATA data/grey.tif 42 | END 43 | 44 | LAYER 45 | NAME grid1 46 | TYPE raster 47 | STATUS default 48 | DATA data/grid.gif 49 | END 50 | 51 | END # of map file 52 | -------------------------------------------------------------------------------- /tests/sample_maps/256color_overdose_cmt.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests layering a layer with transparency on a layer with 256 colors already. 4 | # This is intended to address case where colors are exausted before a 5 | # transparent color can be allocated. 6 | # 7 | # NOTE: without resampling. 8 | # 9 | # ISSUE: The resulting image has the grid drawn in a grey color instead of 10 | # the natural red. This is because the colormap is full by the time 11 | # we get to allocating a color for the grid. This is an expected 12 | # "error" in the results. 13 | # 14 | MAP 15 | 16 | NAME TEST 17 | STATUS ON 18 | SIZE 400 300 19 | EXTENT 0.5 0.5 399.5 299.5 20 | IMAGECOLOR 255 255 0 21 | 22 | IMAGETYPE png8_t 23 | 24 | OUTPUTFORMAT 25 | NAME png8_t 26 | DRIVER "GD/PNG" 27 | EXTENSION "png" 28 | MIMETYPE "image/png" 29 | IMAGEMODE PC256 30 | TRANSPARENT OFF 31 | END 32 | 33 | LAYER 34 | NAME grey 35 | TYPE raster 36 | PROCESSING "COLOR_MATCH_THRESHOLD=3" 37 | STATUS default 38 | DATA data/grey.tif 39 | END 40 | 41 | LAYER 42 | NAME grid1 43 | TYPE raster 44 | STATUS default 45 | DATA data/grid.gif 46 | END 47 | 48 | END # of map file 49 | -------------------------------------------------------------------------------- /tests/sample_maps/5band.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test a R,G,B,unknown,Alpha image 3 | 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 300 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE png24_t 13 | 14 | OUTPUTFORMAT 15 | NAME png24_t 16 | DRIVER "GDAL/PNG" 17 | IMAGEMODE RGBA 18 | TRANSPARENT ON 19 | END 20 | 21 | LAYER 22 | NAME my_layer 23 | TYPE raster 24 | STATUS ON 25 | DATA data/5band.vrt 26 | END 27 | 28 | END # of map file 29 | -------------------------------------------------------------------------------- /tests/sample_maps/alpha_on_alpha_overlay.map: -------------------------------------------------------------------------------- 1 | # 2 | # This tests overlaying an RGBA image on an RGBA image (itself). This is 3 | # intended to test the general mixing case in msAlphaBlend(). The resulting 4 | # image should be essentially the same as the source, except in areas of 5 | # partial alpha the alpha will "densify" somewhat. 6 | # 7 | 8 | MAP 9 | 10 | NAME TEST 11 | STATUS ON 12 | SIZE 400 300 13 | EXTENT 0.5 0.5 399.5 299.5 14 | IMAGECOLOR 255 255 0 15 | 16 | OUTPUTFORMAT 17 | NAME png24_t 18 | DRIVER "GDAL/PNG" 19 | IMAGEMODE RGBA 20 | END 21 | 22 | LAYER 23 | NAME rgb 24 | TYPE raster 25 | STATUS default 26 | DATA data/rgba.tif 27 | OFFSITE 111 222 111 28 | END 29 | 30 | LAYER 31 | NAME rgb2 32 | TYPE raster 33 | STATUS default 34 | DATA data/rgba.tif 35 | OFFSITE 111 222 111 36 | END 37 | 38 | END # of map file 39 | -------------------------------------------------------------------------------- /tests/sample_maps/autostyle.map: -------------------------------------------------------------------------------- 1 | # 2 | # OGR Rendering with autostyling. 3 | # 4 | # REQUIRES: INPUT=OGR OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | EXTENT -150 45 -40 75 9 | SIZE 400 300 10 | IMAGECOLOR 0 0 0 11 | 12 | IMAGETYPE png 13 | 14 | LAYER 15 | NAME canada 16 | TYPE line 17 | CONNECTIONTYPE OGR 18 | CONNECTION "data/canada.dgn" 19 | DATA "elements" 20 | STATUS default 21 | STYLEITEM "AUTO" 22 | CLASS 23 | NAME "work" 24 | END 25 | END 26 | 27 | END 28 | -------------------------------------------------------------------------------- /tests/sample_maps/autostyle_quoted.map: -------------------------------------------------------------------------------- 1 | # 2 | # OGR Rendering with autostyling. 3 | # 4 | # REQUIRES: INPUT=OGR OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | EXTENT -1 -1 1 1 9 | SIZE 400 300 10 | IMAGECOLOR 255 255 255 11 | 12 | IMAGETYPE png 13 | SHAPEPATH "data/" 14 | #CONFIG "MS_ERRORFILE" "stderr" 15 | 16 | LAYER 17 | NAME canada 18 | TYPE point 19 | CONNECTIONTYPE OGR 20 | CONNECTION "quoted_text.TAB" 21 | DATA "quoted_text" 22 | STATUS default 23 | STYLEITEM "AUTO" 24 | LABELCACHE OFF 25 | CLASS 26 | NAME "work" 27 | END 28 | END 29 | 30 | END 31 | -------------------------------------------------------------------------------- /tests/sample_maps/average_rgb.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test averaged resampling. Results currently depend on the 2x oversampling 3 | # for mapresample.c. 4 | # 5 | # REQUIRES: SUPPORTS=PROJ 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 12 9 12 | EXTENT 0.5 0.5 399.5 299.5 13 | IMAGECOLOR 255 255 0 14 | 15 | IMAGETYPE png24 16 | 17 | # 18 | # Start of layer definitions 19 | # 20 | 21 | LAYER 22 | NAME grid1 23 | TYPE raster 24 | STATUS default 25 | PROCESSING "RESAMPLE=AVERAGE" 26 | # PROCESSING "LOAD_FULL_RES_IMAGE=YES" 27 | DATA data/rgb.tif 28 | END 29 | 30 | END # of map file 31 | -------------------------------------------------------------------------------- /tests/sample_maps/average_rgb_plug.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test averaged resampling. Results currently depend on the 2x oversampling 3 | # for mapresample.c. 4 | # 5 | # REQUIRES: SUPPORTS=PROJ 6 | # REQUIRES: SUPPORTS=AGG 7 | # 8 | MAP 9 | 10 | NAME TEST 11 | STATUS ON 12 | SIZE 12 9 13 | EXTENT 0.5 0.5 399.5 299.5 14 | IMAGECOLOR 0 0 255 15 | 16 | OUTPUTFORMAT 17 | NAME png24_t 18 | DRIVER "AGG/PNG" 19 | IMAGEMODE RGB 20 | TRANSPARENT OFF 21 | END 22 | 23 | IMAGETYPE png24_t 24 | 25 | # 26 | # Start of layer definitions 27 | # 28 | 29 | LAYER 30 | NAME grid1 31 | TYPE raster 32 | STATUS default 33 | PROCESSING "RESAMPLE=AVERAGE" 34 | # PROCESSING "LOAD_FULL_RES_IMAGE=YES" 35 | DATA data/rgb.tif 36 | END 37 | 38 | END # of map file 39 | -------------------------------------------------------------------------------- /tests/sample_maps/baseline_text.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: baseline_text.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: baseline_text.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: baseline_text.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: baseline_text.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | MAP 7 | EXTENT 0 0 100 50 8 | IMAGECOLOR 255 255 255 9 | IMAGETYPE png 10 | FONTSET "../misc/fonts.lst" 11 | SIZE 100 50 12 | STATUS ON 13 | NAME "text_test" 14 | 15 | LAYER 16 | NAME "text_test" 17 | STATUS default 18 | TYPE POINT 19 | FEATURE 20 | POINTS 10 25 END 21 | TEXT "bq" 22 | END 23 | CLASS 24 | LABEL 25 | FONT "default" 26 | SIZE 20 27 | TYPE TRUETYPE 28 | COLOR 0 0 0 29 | POSITION UR 30 | END 31 | END 32 | CLASS 33 | END 34 | END 35 | 36 | LAYER 37 | NAME "text_test2" 38 | STATUS default 39 | TEMPLATE "dummy.html" 40 | TYPE POINT 41 | FEATURE 42 | POINTS 50 25 END 43 | TEXT "aaa" 44 | END 45 | CLASS 46 | LABEL 47 | FONT "default" 48 | SIZE 20 49 | TYPE TRUETYPE 50 | COLOR 0 0 0 51 | POSITION UR 52 | END 53 | END 54 | CLASS 55 | END 56 | END 57 | 58 | END 59 | -------------------------------------------------------------------------------- /tests/sample_maps/bdry_counpy2_mssql.map: -------------------------------------------------------------------------------- 1 | INCLUDE 'include/mssql_connection.map' 2 | DATA "ogr_geometry from (select * from bdry_counpy2) as foo USING UNIQUE ogr_fid USING SRID=26915" 3 | STATUS OFF 4 | TYPE POLYGON 5 | CLASS 6 | STYLE 7 | COLOR 255 100 100 8 | OUTLINECOLOR 181 181 181 9 | END 10 | END 11 | TEMPLATE 'void' 12 | -------------------------------------------------------------------------------- /tests/sample_maps/bdry_counpy2_ogr.map: -------------------------------------------------------------------------------- 1 | CONNECTIONTYPE OGR 2 | CONNECTION 'data' 3 | DATA 'bdry_counpy2' 4 | STATUS OFF 5 | TYPE POLYGON 6 | CLASS 7 | STYLE 8 | COLOR 255 100 100 9 | OUTLINECOLOR 181 181 181 10 | END 11 | END 12 | TEMPLATE 'void' 13 | -------------------------------------------------------------------------------- /tests/sample_maps/bdry_counpy2_postgis.map: -------------------------------------------------------------------------------- 1 | CONNECTIONTYPE POSTGIS 2 | CONNECTION "dbname=msautotest user=postgres" 3 | DATA "the_geom from bdry_counpy2 using unique gid" 4 | STATUS OFF 5 | TYPE POLYGON 6 | CLASS 7 | STYLE 8 | COLOR 255 100 100 9 | OUTLINECOLOR 181 181 181 10 | END 11 | END 12 | TEMPLATE 'void' 13 | -------------------------------------------------------------------------------- /tests/sample_maps/bdry_counpy2_shapefile.map: -------------------------------------------------------------------------------- 1 | DATA 'data/bdry_counpy2' 2 | STATUS ON 3 | TYPE POLYGON 4 | CLASS 5 | STYLE 6 | COLOR 255 100 100 7 | OUTLINECOLOR 181 181 181 8 | END 9 | END 10 | TEMPLATE 'void' 11 | -------------------------------------------------------------------------------- /tests/sample_maps/bilinear_float.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test bilinear resampling on floating point "raw" data format. 3 | # 4 | # REQUIRES: SUPPORTS=PROJ 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 400 300 10 | EXTENT 0.5 0.5 399.5 299.5 11 | IMAGECOLOR 255 255 0 12 | 13 | IMAGETYPE out_float 14 | 15 | OUTPUTFORMAT 16 | NAME out_float 17 | DRIVER "GDAL/GTIFF" 18 | FORMATOPTION "COMPRESS=DEFLATE" 19 | IMAGEMODE FLOAT32 20 | END 21 | 22 | LAYER 23 | NAME grid1 24 | TYPE raster 25 | STATUS default 26 | DATA data/float.tif 27 | PROCESSING "RESAMPLE=BILINEAR" 28 | END 29 | 30 | END # of map file 31 | -------------------------------------------------------------------------------- /tests/sample_maps/bilinear_left_right.map: -------------------------------------------------------------------------------- 1 | # Test assembling two rasters and bilinear resampling 2 | MAP 3 | 4 | NAME TEST 5 | PROJECTION 6 | "init=epsg:4326" 7 | END 8 | 9 | EXTENT -3.515625 -35.15625 3.515625 35.15625 10 | SIZE 32 320 11 | IMAGETYPE png 12 | 13 | LAYER 14 | NAME "east-bilinear" 15 | TYPE RASTER 16 | STATUS default 17 | 18 | PROJECTION 19 | "init=epsg:4326" 20 | END 21 | PROCESSING "RESAMPLE=BILINEAR" 22 | DATA "data/east.tif" 23 | END 24 | 25 | LAYER 26 | NAME "west-bilinear" 27 | TYPE RASTER 28 | STATUS default 29 | 30 | PROJECTION 31 | "init=epsg:4326" 32 | END 33 | PROCESSING "RESAMPLE=BILINEAR" 34 | DATA "data/west.tif" 35 | END 36 | 37 | END 38 | -------------------------------------------------------------------------------- /tests/sample_maps/bilinear_src_transp.map: -------------------------------------------------------------------------------- 1 | # Test bilinear resampling(over-sampling) with source that is 2 | # opaque red on the left and transparent on the right 3 | 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 40 9 | EXTENT 0.5 1.5 39.5 2.5 10 | IMAGECOLOR 0 0 0 11 | 12 | OUTPUTFORMAT 13 | NAME "png" 14 | DRIVER AGG/PNG 15 | MIMETYPE "image/png" 16 | IMAGEMODE RGBA 17 | EXTENSION "png" 18 | END 19 | 20 | OUTPUTFORMAT 21 | NAME "tif" 22 | DRIVER GDAL/GTiff 23 | MIMETYPE "image/tif" 24 | IMAGEMODE RGBA 25 | EXTENSION "tif" 26 | END 27 | 28 | LAYER 29 | NAME test 30 | TYPE RASTER 31 | STATUS default 32 | DATA data/leftredrighttransp.tif 33 | PROCESSING "RESAMPLE=BILINEAR" 34 | END 35 | 36 | END # of map file 37 | -------------------------------------------------------------------------------- /tests/sample_maps/bilinear_src_transp2.map: -------------------------------------------------------------------------------- 1 | # Test bilinear resampling(over-sampling) with source that has alpha 2 | # gradient from red opaque on the left to transparent on the right 3 | 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 40 9 | EXTENT 0.5 0.5 39.5 1.5 10 | IMAGECOLOR 0 0 0 11 | 12 | OUTPUTFORMAT 13 | NAME "png" 14 | DRIVER AGG/PNG 15 | MIMETYPE "image/png" 16 | IMAGEMODE RGBA 17 | EXTENSION "png" 18 | END 19 | 20 | OUTPUTFORMAT 21 | NAME "tif" 22 | DRIVER GDAL/GTiff 23 | MIMETYPE "image/tif" 24 | IMAGEMODE RGBA 25 | EXTENSION "tif" 26 | END 27 | 28 | LAYER 29 | NAME test 30 | TYPE RASTER 31 | STATUS default 32 | DATA data/redtranspgradient.tif 33 | PROCESSING "RESAMPLE=BILINEAR" 34 | END 35 | 36 | END # of map file 37 | -------------------------------------------------------------------------------- /tests/sample_maps/bug1526.map: -------------------------------------------------------------------------------- 1 | # 2 | # This tests the fix for bug 1526. Bug 1526 resulted in hangs when 3 | # processing very very small rectangles in msProjectRect() due to the 4 | # increment size rounding to zero against the base values. The output 5 | # image is not intended to be interesting. The important thing is that 6 | # map2img complete, not hang. 7 | # 8 | # REQUIRES: INPUT=SHAPE OUTPUT=PNG SUPPORTS=PROJ 9 | # 10 | MAP 11 | NAME 'ORTH_TEST' 12 | IMAGETYPE PNG 13 | EXTENT 2000000 2000000 2000000.00000001 2000000.00000001 14 | SIZE 400 400 15 | 16 | PROJECTION 17 | "+proj=ortho +lon_0=0 +lat_0=0 +datum=WGS84" 18 | END 19 | 20 | LAYER 21 | NAME "world" 22 | TYPE POLYGON 23 | STATUS DEFAULT 24 | DATA "data/world_testpoly.shp" 25 | PROJECTION 26 | "+proj=latlong +datum=WGS84" 27 | END 28 | CLASS 29 | STYLE 30 | OUTLINECOLOR 255 0 0 31 | COLOR 0 255 0 32 | END 33 | END 34 | END 35 | END 36 | -------------------------------------------------------------------------------- /tests/sample_maps/chartlayer_pie.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: chartlayer_pie.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: chartlayer_pie.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: chartlayer_pie.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: chartlayer_pie.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # Test on chart creation 8 | # 9 | # 10 | MAP 11 | 12 | NAME DEMO 13 | STATUS ON 14 | SIZE 150 150 15 | EXTENT 2253355.750000 -76361.773438 2447648.500000 515489.031250 16 | UNITS METERS 17 | SHAPEPATH "../misc/data" 18 | IMAGECOLOR 255 255 255 19 | IMAGETYPE png 20 | 21 | 22 | LAYER 23 | NAME charts 24 | 25 | TYPE CHART 26 | STATUS DEFAULT 27 | PROCESSING "CHART_TYPE=pie" 28 | PROCESSING "CHART_SIZE=30" 29 | DATA chartlayer 30 | 31 | FILTERITEM "MAINPOLY" 32 | FILTER "1" 33 | 34 | CLASS 35 | NAME "var1" 36 | STYLE 37 | SIZE [V1] 38 | COLOR 255 0 0 39 | END 40 | END 41 | CLASS 42 | NAME "var2" 43 | STYLE 44 | SIZE [V2] 45 | COLOR 0 255 0 46 | END 47 | END 48 | CLASS 49 | NAME "var3" 50 | STYLE 51 | SIZE [V3] 52 | COLOR 0 0 255 53 | END 54 | END 55 | CLASS 56 | NAME "var4" 57 | STYLE 58 | SIZE [V4] 59 | COLOR 255 0 255 60 | END 61 | END 62 | END 63 | 64 | 65 | 66 | 67 | END # Map File 68 | -------------------------------------------------------------------------------- /tests/sample_maps/chartlayer_pie2.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: chartlayer_pie2.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: chartlayer_pie2.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: chartlayer_pie2.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: chartlayer_pie2.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # Test on chart creation 8 | # 9 | # 10 | MAP 11 | 12 | NAME DEMO 13 | STATUS ON 14 | SIZE 150 150 15 | EXTENT 2253355.750000 -76361.773438 2447648.500000 515489.031250 16 | UNITS METERS 17 | SHAPEPATH "../misc/data" 18 | IMAGECOLOR 255 255 255 19 | IMAGETYPE png 20 | 21 | 22 | LAYER 23 | NAME charts 24 | 25 | TYPE CHART 26 | STATUS DEFAULT 27 | PROCESSING "CHART_TYPE=pie" 28 | PROCESSING "CHART_SIZE_RANGE=V1 10 30 0 2000" 29 | DATA chartlayer 30 | 31 | FILTERITEM "MAINPOLY" 32 | FILTER "1" 33 | 34 | CLASS 35 | NAME "var1" 36 | STYLE 37 | SIZE [V1] 38 | COLOR 255 0 0 39 | END 40 | END 41 | CLASS 42 | NAME "var2" 43 | STYLE 44 | SIZE [V2] 45 | COLOR 0 255 0 46 | END 47 | END 48 | CLASS 49 | NAME "var3" 50 | STYLE 51 | SIZE [V3] 52 | COLOR 0 0 255 53 | END 54 | END 55 | CLASS 56 | NAME "var4" 57 | STYLE 58 | SIZE [V4] 59 | COLOR 255 0 255 60 | END 61 | END 62 | END 63 | 64 | 65 | 66 | 67 | END # Map File 68 | -------------------------------------------------------------------------------- /tests/sample_maps/circle_layer.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: circle_layer.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: circle_layer.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: circle_layer.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: circle_layer.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # REQUIRES: OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | STATUS ON 12 | EXTENT 0 0 400 300 13 | SIZE 80 60 14 | IMAGETYPE png 15 | 16 | LAYER 17 | NAME "circles" 18 | TYPE circle 19 | STATUS default 20 | CLASS 21 | NAME "test1" 22 | STYLE 23 | COLOR 0 0 0 24 | END 25 | END 26 | FEATURE 27 | POINTS 28 | 10 10 50 50 29 | END 30 | END 31 | FEATURE 32 | POINTS 33 | 100 100 1000 1000 34 | END 35 | END 36 | END 37 | 38 | END 39 | -------------------------------------------------------------------------------- /tests/sample_maps/class16.map: -------------------------------------------------------------------------------- 1 | # 2 | # Simple test of classification methods on a floating point input. 3 | # 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 300 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE png8_t 13 | 14 | OUTPUTFORMAT 15 | NAME png8_t 16 | DRIVER "GD/PNG" 17 | IMAGEMODE PC256 18 | TRANSPARENT ON 19 | END 20 | 21 | LAYER 22 | NAME grid1 23 | TYPE raster 24 | STATUS default 25 | DATA data/float.tif 26 | CLASS 27 | NAME "red" 28 | EXPRESSION ([pixel] < -3) 29 | STYLE 30 | COLOR 255 0 0 31 | END 32 | END 33 | CLASS 34 | NAME "green" 35 | EXPRESSION ([pixel] >= -3 and [pixel] < 3) 36 | STYLE 37 | COLOR 0 255 0 38 | END 39 | END 40 | CLASS 41 | NAME "blue" 42 | EXPRESSION ([pixel] >= 3) 43 | STYLE 44 | COLOR 0 0 255 45 | END 46 | END 47 | END 48 | 49 | END # of map file 50 | -------------------------------------------------------------------------------- /tests/sample_maps/class16_classify_scaled.map: -------------------------------------------------------------------------------- 1 | # 2 | # Simple test of classification methods on a floating point input. 3 | # 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 300 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE png8_t 13 | 14 | OUTPUTFORMAT 15 | NAME png8_t 16 | DRIVER "GD/PNG" 17 | IMAGEMODE PC256 18 | TRANSPARENT ON 19 | END 20 | 21 | LAYER 22 | NAME grid1 23 | TYPE raster 24 | STATUS default 25 | DATA data/float.tif 26 | 27 | PROCESSING "SCALE=0,28" 28 | PROCESSING "SCALE_BUCKETS=256" 29 | PROCESSING "CLASSIFY_SCALED=TRUE" 30 | 31 | CLASS 32 | NAME "red" 33 | EXPRESSION ([pixel] < 50) 34 | STYLE 35 | COLOR 255 0 0 36 | END 37 | END 38 | CLASS 39 | NAME "green" 40 | EXPRESSION ([pixel] >=50 and [pixel] < 150) 41 | STYLE 42 | COLOR 0 255 0 43 | END 44 | END 45 | CLASS 46 | NAME "blue" 47 | EXPRESSION ([pixel] > 150) 48 | STYLE 49 | COLOR 0 0 255 50 | END 51 | END 52 | END 53 | 54 | END # of map file 55 | -------------------------------------------------------------------------------- /tests/sample_maps/class16_intoddscale.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test of classification methods on a int16 data with SCALE_BUCKETS 3 | # set (related to bug http://trac.osgeo.org/mapserver/ticket/3174) 4 | # 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 400 300 10 | EXTENT 0.5 0.5 399.5 299.5 11 | IMAGECOLOR 255 255 0 12 | 13 | IMAGETYPE png8_t 14 | 15 | OUTPUTFORMAT 16 | NAME png8_t 17 | DRIVER "GD/PNG" 18 | IMAGEMODE PC256 19 | TRANSPARENT ON 20 | END 21 | 22 | LAYER 23 | NAME grid1 24 | TYPE raster 25 | STATUS default 26 | DATA data/int16.vrt 27 | PROCESSING "SCALE=-10.5,10.5" 28 | PROCESSING "SCALE_BUCKETS=4" 29 | CLASS 30 | NAME "red" 31 | EXPRESSION ([pixel] < -3) 32 | STYLE 33 | COLOR 255 0 0 34 | END 35 | END 36 | CLASS 37 | NAME "green" 38 | EXPRESSION ([pixel] >= -3 and [pixel] < 3) 39 | STYLE 40 | COLOR 0 255 0 41 | END 42 | END 43 | CLASS 44 | NAME "blue" 45 | EXPRESSION ([pixel] >= 3) 46 | STYLE 47 | COLOR 0 0 255 48 | END 49 | END 50 | END 51 | 52 | END # of map file 53 | -------------------------------------------------------------------------------- /tests/sample_maps/class16_ndmap.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test of classification methods on a floating point input with provided 3 | # NODATA, scaling and bucket values. 4 | # 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 400 300 10 | EXTENT 0.5 0.5 399.5 299.5 11 | IMAGECOLOR 255 255 0 12 | 13 | IMAGETYPE png8_t 14 | 15 | OUTPUTFORMAT 16 | NAME png8_t 17 | DRIVER "GD/PNG" 18 | IMAGEMODE PC256 19 | TRANSPARENT ON 20 | END 21 | 22 | LAYER 23 | NAME grid1 24 | TYPE raster 25 | STATUS default 26 | DATA data/float.tif 27 | PROCESSING "NODATA=-6" 28 | PROCESSING "SCALE=-100.5,100.5" 29 | PROCESSING "SCALE_BUCKETS=201" 30 | CLASS 31 | NAME "red" 32 | EXPRESSION ([pixel] < -3) 33 | STYLE 34 | COLOR 255 0 0 35 | END 36 | END 37 | CLASS 38 | NAME "green" 39 | EXPRESSION ([pixel] >= -3 and [pixel] < 3) 40 | STYLE 41 | COLOR 0 255 0 42 | END 43 | END 44 | CLASS 45 | NAME "blue" 46 | EXPRESSION ([pixel] >= 3) 47 | STYLE 48 | COLOR 0 0 255 49 | END 50 | END 51 | END 52 | 53 | END # of map file 54 | -------------------------------------------------------------------------------- /tests/sample_maps/class16_oddscale.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test of classification methods on a floating point input with provided 3 | # scaling that causes merging of some original values throwing off results. 4 | # In particular, a substantial chunk of data that should have fallen into the 5 | # last class will be ignored because it is outside the scaling range. Also, 6 | # values like -4 will now fall into the green class because the fall into the 7 | # 0 to -5.25 bucket which is averaged to -2.675 for classification purposes. 8 | # 9 | MAP 10 | 11 | NAME TEST 12 | STATUS ON 13 | SIZE 400 300 14 | EXTENT 0.5 0.5 399.5 299.5 15 | IMAGECOLOR 255 255 0 16 | 17 | IMAGETYPE png8_t 18 | 19 | OUTPUTFORMAT 20 | NAME png8_t 21 | DRIVER "GD/PNG" 22 | IMAGEMODE PC256 23 | TRANSPARENT ON 24 | END 25 | 26 | LAYER 27 | NAME grid1 28 | TYPE raster 29 | STATUS default 30 | DATA data/float.tif 31 | PROCESSING "SCALE=-10.5,10.5" 32 | PROCESSING "SCALE_BUCKETS=4" 33 | CLASS 34 | NAME "red" 35 | EXPRESSION ([pixel] < -3) 36 | STYLE COLOR 255 0 0 END 37 | END 38 | CLASS 39 | NAME "green" 40 | EXPRESSION ([pixel] >= -3 and [pixel] < 3) 41 | STYLE COLOR 0 255 0 END 42 | END 43 | CLASS 44 | NAME "blue" 45 | EXPRESSION ([pixel] >= 3) 46 | STYLE COLOR 0 0 255 END 47 | END 48 | END 49 | 50 | END # of map file 51 | -------------------------------------------------------------------------------- /tests/sample_maps/class16_range.map: -------------------------------------------------------------------------------- 1 | # 2 | # Simple test of classification methods on a floating point input. 3 | # 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 300 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE png8_t 13 | 14 | OUTPUTFORMAT 15 | NAME png8_t 16 | DRIVER "GD/PNG" 17 | IMAGEMODE PC256 18 | TRANSPARENT ON 19 | END 20 | 21 | LAYER 22 | NAME grid1 23 | TYPE raster 24 | STATUS default 25 | DATA data/float.tif 26 | PROCESSING "SCALE=-10.001,28.001" 27 | CLASS 28 | STYLE 29 | COLORRANGE 0 0 0 255 0 0 30 | DATARANGE -10 14 31 | END 32 | STYLE 33 | COLORRANGE 255 0 0 255 255 0 34 | DATARANGE 14 28 35 | END 36 | END 37 | END 38 | 39 | END # of map file 40 | -------------------------------------------------------------------------------- /tests/sample_maps/classtest1.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Test classification methods on a pseudocolored input image. 4 | # 5 | # NOTE: without resampling. 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 400 300 12 | EXTENT 0.5 0.5 399.5 299.5 13 | IMAGECOLOR 255 255 0 14 | 15 | IMAGETYPE png8_t 16 | 17 | OUTPUTFORMAT 18 | NAME png8_t 19 | DRIVER "GD/PNG" 20 | IMAGEMODE PC256 21 | TRANSPARENT ON 22 | END 23 | 24 | LAYER 25 | NAME grid1 26 | TYPE raster 27 | STATUS default 28 | DATA data/grid.gif 29 | TEMPLATE "fake.html" 30 | CLASS 31 | NAME "Text" 32 | EXPRESSION ([pixel] == 0) 33 | STYLE COLOR -255 -255 -255 END 34 | END 35 | CLASS 36 | NAME "TextBackground" 37 | EXPRESSION ([pixel] == 2) 38 | STYLE COLOR 0 255 0 END 39 | END 40 | CLASS 41 | NAME "Grid" 42 | EXPRESSION ([red] == 96 and [green] == 32 and [blue] == 32) 43 | STYLE COLOR 255 0 0 END 44 | END 45 | END 46 | 47 | END # of map file 48 | -------------------------------------------------------------------------------- /tests/sample_maps/classtest2.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Test classification methods on a pseudocolored input image. 4 | # 5 | # NOTE: without resampling. 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 400 300 12 | EXTENT 0.5 0.5 399.5 299.5 13 | IMAGECOLOR 255 255 0 14 | 15 | OUTPUTFORMAT 16 | NAME png8_t 17 | DRIVER "GDAL/PNG" 18 | IMAGEMODE PC256 19 | END 20 | 21 | LAYER 22 | NAME block 23 | TYPE raster 24 | STATUS default 25 | DATA data/rgb.tif 26 | CLASS 27 | NAME "Hole" 28 | EXPRESSION ([pixel] == 111) 29 | STYLE COLOR 255 0 0 END 30 | END 31 | END 32 | 33 | END # of map file 34 | -------------------------------------------------------------------------------- /tests/sample_maps/classtest2_plugin.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Test classification methods on a pseudocolored input image. 4 | # 5 | # NOTE: without resampling. 6 | # 7 | # REQUIRES: SUPPORTS=AGG 8 | # 9 | MAP 10 | 11 | NAME TEST 12 | STATUS ON 13 | SIZE 400 300 14 | EXTENT 0.5 0.5 399.5 299.5 15 | IMAGECOLOR 255 255 0 16 | 17 | OUTPUTFORMAT 18 | NAME png24_t 19 | DRIVER "AGG/PNG" 20 | IMAGEMODE RGBA 21 | END 22 | 23 | IMAGETYPE png24_t 24 | 25 | LAYER 26 | NAME block 27 | TYPE raster 28 | STATUS default 29 | DATA data/rgb.tif 30 | CLASS 31 | NAME "Hole" 32 | EXPRESSION ([pixel] == 111) 33 | STYLE 34 | COLOR 255 0 0 35 | OPACITY 75 36 | END 37 | END 38 | END 39 | 40 | END # of map file 41 | -------------------------------------------------------------------------------- /tests/sample_maps/compositing.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: compositing.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: compositing.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: compositing.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: compositing.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # Test use of 24bit images with a dummy class used to populate the legend. 8 | # The image should come through as 24bit since there is no expression in the 9 | # class. 10 | # 11 | MAP 12 | 13 | NAME TEST 14 | STATUS ON 15 | SIZE 200 150 16 | EXTENT 0.5 0.5 399.5 299.5 17 | IMAGECOLOR 255 255 0 18 | 19 | IMAGETYPE png24_t 20 | 21 | OUTPUTFORMAT 22 | NAME png24_t 23 | DRIVER "GDAL/PNG" 24 | IMAGEMODE RGBA 25 | TRANSPARENT ON 26 | END 27 | 28 | LAYER 29 | NAME rgb 30 | TYPE raster 31 | STATUS default 32 | DATA ../gdal/data/rgba.tif 33 | PROCESSING "BANDS=1,2,3" 34 | PROCESSING "USE_MASK_BAND=NO" 35 | COMPOSITE 36 | OPACITY 45 37 | COMPOP "multiply" 38 | END 39 | CLASS 40 | KEYIMAGE "data/grid.gif" 41 | END 42 | END 43 | 44 | END # of map file 45 | -------------------------------------------------------------------------------- /tests/sample_maps/connectionoptions.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test LAYER.CONNECTIONOPTIONS 3 | # 4 | MAP 5 | IMAGETYPE PNG24 6 | IMAGECOLOR 255 255 255 7 | SIZE 100 100 8 | EXTENT 0 -90 180 90 9 | 10 | PROJECTION 11 | "init=epsg:4326" 12 | END 13 | 14 | LAYER 15 | NAME "TEST" 16 | STATUS DEFAULT 17 | TYPE RASTER 18 | 19 | # At full resolution red_square.tif is a red square indeed 20 | # but we created an overview which is yellow. 21 | 22 | DATA "data/red_square.tif" 23 | CONNECTIONOPTIONS 24 | "OVERVIEW_LEVEL" "0" 25 | END 26 | 27 | PROJECTION 28 | "init=epsg:4326" 29 | END 30 | END 31 | 32 | 33 | END # end of map file 34 | -------------------------------------------------------------------------------- /tests/sample_maps/context.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test Layer Context (REQUIRES/LABELREQUIRES) 3 | # 4 | # REQUIRES: INPUT=SHAPEFILE 5 | # 6 | # RUN_PARMS: context_test001.png [MAP2IMG] -m [MAPFILE] -l "bdry_counpy2" -o [RESULT] 7 | # RUN_PARMS: context_test002.png [MAP2IMG] -m [MAPFILE] -l "bdry_counpy2 indx_q100kpy4" -o [RESULT] 8 | # RUN_PARMS: context_test003.png [MAP2IMG] -m [MAPFILE] -l "indx_q100kpy4" -o [RESULT] 9 | # 10 | MAP 11 | NAME 'context' 12 | EXTENT 125000 4785000 789000 5489000 13 | UNITS METERS 14 | 15 | SIZE 400 300 16 | IMAGETYPE "png" 17 | 18 | LAYER 19 | NAME 'bdry_counpy2' 20 | INCLUDE 'include/bdry_counpy2_shapefile.map' 21 | END 22 | 23 | LAYER 24 | NAME 'indx_q100kpy4' 25 | REQUIRES '![bdry_counpy2]' 26 | INCLUDE 'include/indx_q100kpy4_shapefile.map' 27 | END 28 | END 29 | -------------------------------------------------------------------------------- /tests/sample_maps/contour.map: -------------------------------------------------------------------------------- 1 | # 2 | # 3 | # Test for Contour Rendering rfc85 4 | # 5 | # 6 | 7 | MAP 8 | NAME TEST_CONTOUR 9 | STATUS ON 10 | SIZE 300 300 11 | EXTENT 3.697829 -16.193665 57.120229 23.8731435 12 | 13 | WEB 14 | IMAGEPATH "/tmp/" 15 | END 16 | 17 | LAYER 18 | NAME "contour" 19 | TYPE LINE 20 | STATUS DEFAULT 21 | CONNECTIONTYPE CONTOUR 22 | DATA data/contour_gwm.tif 23 | PROCESSING "BANDS=1" 24 | PROCESSING "CONTOUR_ITEM=elevation" 25 | PROCESSING "CONTOUR_INTERVAL=20" 26 | CLASS 27 | STYLE 28 | WIDTH 1 29 | COLOR 255 0 0 30 | END 31 | END 32 | END 33 | END 34 | -------------------------------------------------------------------------------- /tests/sample_maps/contour_with_expr.map: -------------------------------------------------------------------------------- 1 | # 2 | # 3 | # Test for Contour Rendering rfc85 4 | # include an expression on elevation 5 | # 6 | 7 | MAP 8 | NAME TEST_CONTOUR 9 | STATUS ON 10 | SIZE 300 300 11 | EXTENT 3.697829 -16.193665 57.120229 23.8731435 12 | 13 | WEB 14 | IMAGEPATH "/tmp/" 15 | END 16 | 17 | LAYER 18 | NAME "contour" 19 | TYPE LINE 20 | STATUS DEFAULT 21 | CONNECTIONTYPE CONTOUR 22 | DATA data/contour_gwm.tif 23 | PROCESSING "BANDS=1" 24 | PROCESSING "CONTOUR_ITEM=elevation" 25 | PROCESSING "CONTOUR_INTERVAL=10" 26 | CLASS 27 | EXPRESSION ([elevation] >= 20) 28 | STYLE 29 | WIDTH 1 30 | COLOR 255 0 0 31 | END 32 | END 33 | END 34 | END 35 | -------------------------------------------------------------------------------- /tests/sample_maps/dateline.map: -------------------------------------------------------------------------------- 1 | # Test dateline wrapping. All but one of the rectangles 2 | # cross the dateline in mercator, and will need some points adjusted 3 | # to stay near their fellow points. But one wide rect goes across 4 | # the globe without crossing the dateline and it needs to remain 5 | # that way. This test excersises the msNeedsWrap() test in mapproject.c. 6 | # 7 | # REQUIRES: INPUT=SHAPE OUTPUT=PNG SUPPORTS=PROJ 8 | # 9 | MAP 10 | NAME 'DATELINE' 11 | IMAGETYPE PNG 12 | EXTENT -200 -90 200 90 13 | SIZE 400 180 14 | 15 | PROJECTION 16 | "+proj=latlong +datum=WGS84 +over" 17 | END 18 | 19 | LAYER 20 | NAME "boxes" 21 | TYPE POLYGON 22 | STATUS DEFAULT 23 | DATA "data/dateline_boxes.shp" 24 | PROJECTION 25 | "+proj=merc +datum=WGS84 +over" 26 | END 27 | CLASS 28 | STYLE 29 | OUTLINECOLOR 0 0 0 30 | COLOR 255 255 0 31 | END 32 | END 33 | END 34 | END 35 | -------------------------------------------------------------------------------- /tests/sample_maps/deferred.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests overlaying a greyscale image with an alpha band on a greyscale image 3 | # into an RGBA output. 4 | # 5 | # NOTE: without resampling. 6 | # 7 | MAP 8 | NAME TEST 9 | STATUS ON 10 | SIZE 400 300 11 | EXTENT 0.5 0.5 399.5 299.5 12 | IMAGECOLOR 255 255 0 13 | 14 | OUTPUTFORMAT 15 | NAME png24_t 16 | DRIVER "GDAL/PNG" 17 | IMAGEMODE RGBA 18 | END 19 | 20 | LAYER 21 | NAME grey_1 22 | TYPE raster 23 | STATUS default 24 | DATA data/pct22.tif 25 | END 26 | 27 | LAYER 28 | NAME grey_2 29 | TYPE raster 30 | STATUS default 31 | DATA data/pct22.tif 32 | END 33 | 34 | LAYER 35 | NAME grey_3 36 | TYPE raster 37 | STATUS default 38 | DATA data/pct22.tif 39 | END 40 | 41 | END # of map file 42 | -------------------------------------------------------------------------------- /tests/sample_maps/embed_legend.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: embed_legend.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: embed_legend.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | # 5 | # Simple test of embedded legend support. 6 | # 7 | # REQUIRES: OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | STATUS ON 12 | EXTENT 478300 4762880 481650 4765610 13 | SIZE 150 100 14 | shapepath "../misc/data" 15 | IMAGETYPE png 16 | fontset "../misc/fonts.lst" 17 | imagecolor 255 200 0 18 | 19 | 20 | LEGEND 21 | POSITION LR 22 | STATUS EMBED 23 | imagecolor 255 255 255 24 | label 25 | type truetype 26 | color 0 0 0 27 | font "default" 28 | size 9 29 | end 30 | END 31 | 32 | LAYER 33 | NAME shppoly 34 | TYPE polygon 35 | DATA "shppoly/poly.shp" 36 | STATUS default 37 | CLASSITEM "AREA" 38 | CLASS 39 | NAME "Big" 40 | EXPRESSION ([AREA] >= 500000) 41 | STYLE 42 | COLOR 255 0 0 43 | OUTLINECOLOR 0 0 0 44 | END 45 | END 46 | CLASS 47 | NAME "Medium" 48 | EXPRESSION ([AREA] >= 100000 and [AREA] < 500000) 49 | STYLE 50 | COLOR 0 255 0 51 | OUTLINECOLOR 0 0 0 52 | END 53 | END 54 | CLASS 55 | NAME "Small" 56 | EXPRESSION ([AREA] < 100000) 57 | STYLE 58 | COLOR 0 0 255 59 | OUTLINECOLOR 0 0 0 60 | END 61 | END 62 | END 63 | 64 | END 65 | -------------------------------------------------------------------------------- /tests/sample_maps/embed_legend_tr.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: embed_legend_tr.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: embed_legend_tr.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | # 5 | # Simple test of embedded legend support. 6 | # 7 | # REQUIRES: OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | STATUS ON 12 | EXTENT 478300 4762880 481650 4765610 13 | SIZE 150 100 14 | shapepath "../misc/data" 15 | IMAGETYPE png 16 | fontset "../misc/fonts.lst" 17 | imagecolor 255 200 0 18 | 19 | LEGEND 20 | POSITION LR 21 | STATUS EMBED 22 | TRANSPARENT ON 23 | label 24 | type truetype 25 | color 0 0 0 26 | font "default" 27 | size 9 28 | end 29 | END 30 | 31 | LAYER 32 | NAME shppoly 33 | TYPE polygon 34 | DATA "shppoly/poly.shp" 35 | STATUS default 36 | CLASSITEM "AREA" 37 | CLASS 38 | NAME "Big" 39 | EXPRESSION ([AREA] >= 500000) 40 | STYLE 41 | COLOR 255 0 0 42 | OUTLINECOLOR 0 0 0 43 | END 44 | END 45 | CLASS 46 | NAME "Medium" 47 | EXPRESSION ([AREA] >= 100000 and [AREA] < 500000) 48 | STYLE 49 | COLOR 0 255 0 50 | OUTLINECOLOR 0 0 0 51 | END 52 | END 53 | CLASS 54 | NAME "Small" 55 | EXPRESSION ([AREA] < 100000) 56 | STYLE 57 | COLOR 0 0 255 58 | OUTLINECOLOR 0 0 0 59 | END 60 | END 61 | END 62 | 63 | END 64 | -------------------------------------------------------------------------------- /tests/sample_maps/embed_sb_rgb.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: embed_sb_rgb.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: embed_sb_rgb.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | # 5 | # Test embedded scalebar ... without transparency to RGBA output file. 6 | # 7 | # REQUIRES: OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | EXTENT -180 -90 180 90 12 | SIZE 160 40 13 | IMAGECOLOR 0 0 0 14 | fontset "../misc/fonts.lst" 15 | 16 | IMAGETYPE png 17 | 18 | SCALEBAR 19 | TRANSPARENT OFF 20 | LABEL 21 | COLOR 0 0 0 22 | size 9 23 | type truetype 24 | font "default" 25 | 26 | END 27 | SIZE 150 3 28 | COLOR 0 0 0 29 | BACKGROUNDCOLOR 255 255 255 30 | OUTLINECOLOR 0 0 0 31 | UNITS kilometers 32 | INTERVALS 3 33 | STATUS EMBED 34 | END 35 | 36 | END 37 | -------------------------------------------------------------------------------- /tests/sample_maps/embed_sb_rgb_tr.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: embed_sb_rgb_tr.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: embed_sb_rgb_tr.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | # 5 | # Test embedded scalebar ... with transparency to RGB output file. 6 | # 7 | # REQUIRES: OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | EXTENT -180 -90 180 90 12 | SIZE 160 40 13 | IMAGECOLOR 255 255 255 14 | fontset "../misc/fonts.lst" 15 | 16 | IMAGETYPE png 17 | 18 | SCALEBAR 19 | TRANSPARENT ON 20 | LABEL 21 | COLOR 0 0 0 22 | size 9 23 | type truetype 24 | font "default" 25 | END 26 | SIZE 150 3 27 | COLOR 0 0 0 28 | BACKGROUNDCOLOR 255 255 255 29 | OUTLINECOLOR 0 0 0 30 | UNITS kilometers 31 | INTERVALS 3 32 | STATUS EMBED 33 | END 34 | 35 | END 36 | -------------------------------------------------------------------------------- /tests/sample_maps/embed_sb_rgba.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: embed_sb_rgba.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: embed_sb_rgba.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | # 5 | # Test embedded scalebar ... without transparency to RGBA output file. 6 | # 7 | # REQUIRES: OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | EXTENT -180 -90 180 90 12 | SIZE 160 40 13 | IMAGECOLOR 0 0 0 14 | fontset "../misc/fonts.lst" 15 | 16 | OUTPUTFORMAT 17 | DRIVER AGG/PNG 18 | TRANSPARENT ON 19 | END 20 | 21 | OUTPUTFORMAT 22 | DRIVER CAIRO/PNG 23 | TRANSPARENT ON 24 | END 25 | 26 | IMAGETYPE png 27 | 28 | SCALEBAR 29 | TRANSPARENT OFF 30 | LABEL 31 | COLOR 0 0 0 32 | size 9 33 | type truetype 34 | font "default" 35 | 36 | END 37 | SIZE 150 3 38 | COLOR 0 0 0 39 | BACKGROUNDCOLOR 255 255 255 40 | OUTLINECOLOR 0 0 0 41 | UNITS kilometers 42 | INTERVALS 3 43 | STATUS EMBED 44 | END 45 | 46 | END 47 | -------------------------------------------------------------------------------- /tests/sample_maps/embed_sb_rgba_offset.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: embed_sb_rgba_offset.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: embed_sb_rgba_offset.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | # 5 | # Test embedded scalebar with an offset. 6 | # 7 | # REQUIRES: OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | EXTENT -180 -90 180 90 12 | SIZE 160 40 13 | IMAGECOLOR 0 0 0 14 | fontset "../misc/fonts.lst" 15 | 16 | OUTPUTFORMAT 17 | DRIVER AGG/PNG 18 | TRANSPARENT ON 19 | END 20 | 21 | OUTPUTFORMAT 22 | DRIVER CAIRO/PNG 23 | TRANSPARENT ON 24 | END 25 | 26 | IMAGETYPE png 27 | 28 | SCALEBAR 29 | TRANSPARENT OFF 30 | LABEL 31 | COLOR 0 0 0 32 | size 9 33 | type truetype 34 | font "default" 35 | 36 | END 37 | SIZE 150 3 38 | COLOR 0 0 0 39 | BACKGROUNDCOLOR 255 255 255 40 | OUTLINECOLOR 0 0 0 41 | UNITS kilometers 42 | INTERVALS 3 43 | STATUS EMBED 44 | OFFSET 5 5 45 | END 46 | 47 | END 48 | -------------------------------------------------------------------------------- /tests/sample_maps/embed_sb_rgba_tr.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: embed_sb_rgba_tr.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: embed_sb_rgba_tr.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | # 5 | # Test embedded scalebar ... with transparency to RGBA output file. 6 | # 7 | # REQUIRES: OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | EXTENT -180 -90 180 90 12 | SIZE 160 40 13 | IMAGECOLOR 0 0 0 14 | fontset "../misc/fonts.lst" 15 | 16 | OUTPUTFORMAT 17 | DRIVER AGG/PNG 18 | TRANSPARENT ON 19 | END 20 | 21 | OUTPUTFORMAT 22 | DRIVER CAIRO/PNG 23 | TRANSPARENT ON 24 | END 25 | 26 | imagecolor 255 255 255 27 | IMAGETYPE png 28 | 29 | SCALEBAR 30 | TRANSPARENT ON 31 | LABEL 32 | COLOR 0 0 0 33 | size 9 34 | type truetype 35 | font "default" 36 | END 37 | SIZE 150 3 38 | COLOR 0 0 0 39 | BACKGROUNDCOLOR 255 255 255 40 | OUTLINECOLOR 0 0 0 41 | UNITS kilometers 42 | INTERVALS 3 43 | STATUS EMBED 44 | END 45 | 46 | END 47 | -------------------------------------------------------------------------------- /tests/sample_maps/empty.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: empty.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: empty.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: empty.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: empty.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | map 7 | 8 | imagetype png 9 | size 10 10 10 | extent 0 0 400 300 11 | shapepath "../misc/data" 12 | fontset "../misc/fonts.lst" 13 | symbolset "symbolset" 14 | 15 | 16 | layer 17 | type point 18 | end 19 | 20 | end 21 | -------------------------------------------------------------------------------- /tests/sample_maps/filtermap.map: -------------------------------------------------------------------------------- 1 | MAP 2 | NAME 'filter' 3 | EXTENT 125000 4785000 789000 5489000 4 | UNITS METERS 5 | SIZE 300 300 6 | IMAGETYPE PNG 7 | 8 | LAYER 9 | NAME 'filter1' 10 | INCLUDE 'include/bdry_counpy2_shapefile.map' 11 | END 12 | 13 | LAYER 14 | NAME 'filters2' 15 | INCLUDE 'include/bdry_counpy2_shapefile.map' 16 | END 17 | END 18 | -------------------------------------------------------------------------------- /tests/sample_maps/font-fail.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: font-fail-key.txt [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=map&layer=l1" > [RESULT_DEVERSION] 2 | # RUN_PARMS: font-fail-file.txt [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=map&layer=l2" > [RESULT_DEVERSION] 3 | # RUN_PARMS: font-fail-missing-glyph.png [MAP2IMG] -m [MAPFILE] -l missing_glyph -i png -o [RESULT] 4 | 5 | MAP 6 | 7 | STATUS ON 8 | EXTENT 0 0 400 300 9 | SIZE 200 150 10 | FONTSET "../misc/fonts.lst" 11 | IMAGETYPE png24 12 | symbolset "symbolset" 13 | 14 | LAYER 15 | NAME "l1" 16 | TYPE POINT 17 | status on 18 | class 19 | label 20 | text "foobar" 21 | type truetype 22 | size 9 23 | color 0 0 0 24 | font "foobar" 25 | end 26 | end 27 | FEATURE POINTS 50 50 END END 28 | END 29 | LAYER 30 | NAME "l2" 31 | TYPE POINT 32 | status on 33 | class 34 | label 35 | text "foobar" 36 | type truetype 37 | size 9 38 | color 0 0 0 39 | font "bogus" 40 | end 41 | end 42 | FEATURE POINTS 50 50 END END 43 | END 44 | 45 | LAYER 46 | NAME "missing_glyph" 47 | STATUS ON 48 | TYPE POLYGON 49 | FEATURE 50 | POINTS 0 0 400 0 400 300 0 300 0 0 END 51 | END 52 | CLASS 53 | LABEL 54 | TEXT 'this is a test: это проверка' 55 | TYPE truetype 56 | SIZE 8 57 | FONT "default" 58 | END 59 | END 60 | END 61 | 62 | END 63 | -------------------------------------------------------------------------------- /tests/sample_maps/force_palette.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: force_palette.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: force_palette.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | 5 | # 6 | # Tests the quantization option allowing conversion of 7 | # RGB or RGBA images to 8bit just before saving to PNG. 8 | # 9 | # See http://mapserver.gis.umn.edu/bugs/show_bug.cgi?id=1690 10 | # 11 | MAP 12 | 13 | NAME TEST 14 | STATUS ON 15 | SIZE 200 150 16 | EXTENT 0.5 0.5 399.5 299.5 17 | IMAGECOLOR 255 255 0 18 | SHAPEPATH "../gdal" 19 | IMAGETYPE png 20 | 21 | OUTPUTFORMAT 22 | NAME png 23 | DRIVER "AGG/PNG" 24 | EXTENSION "png" 25 | MIMETYPE "image/png" 26 | IMAGEMODE RGBA 27 | TRANSPARENT OFF 28 | FORMATOPTION "PALETTE_FORCE=ON" 29 | FORMATOPTION "PALETTE=palette.txt" 30 | END 31 | OUTPUTFORMAT 32 | NAME cairopng 33 | DRIVER "CAIRO/PNG" 34 | EXTENSION "png" 35 | MIMETYPE "image/png" 36 | IMAGEMODE RGBA 37 | TRANSPARENT OFF 38 | FORMATOPTION "PALETTE_FORCE=ON" 39 | FORMATOPTION "PALETTE=palette.txt" 40 | END 41 | 42 | LAYER 43 | NAME grey 44 | TYPE raster 45 | STATUS default 46 | DATA data/grey.tif 47 | END 48 | 49 | LAYER 50 | NAME grid1 51 | TYPE raster 52 | STATUS default 53 | DATA data/grid.gif 54 | END 55 | 56 | END # of map file 57 | -------------------------------------------------------------------------------- /tests/sample_maps/force_palette_rgba.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: force_palette_rgba.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: force_palette_rgba.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | 5 | # 6 | # Tests the quantization option allowing conversion of 7 | # RGB or RGBA images to 8bit just before saving to PNG. 8 | # 9 | # See http://mapserver.gis.umn.edu/bugs/show_bug.cgi?id=1690 10 | # 11 | MAP 12 | 13 | NAME TEST 14 | STATUS ON 15 | SIZE 200 150 16 | EXTENT 0.5 0.5 399.5 299.5 17 | IMAGECOLOR 255 255 0 18 | SHAPEPATH "../gdal" 19 | IMAGETYPE png 20 | 21 | OUTPUTFORMAT 22 | NAME png 23 | DRIVER "AGG/PNG" 24 | EXTENSION "png" 25 | MIMETYPE "image/png" 26 | IMAGEMODE RGBA 27 | TRANSPARENT ON 28 | FORMATOPTION "PALETTE_FORCE=ON" 29 | FORMATOPTION "PALETTE=palette_rgba.txt" 30 | END 31 | OUTPUTFORMAT 32 | NAME cairopng 33 | DRIVER "CAIRO/PNG" 34 | EXTENSION "png" 35 | MIMETYPE "image/png" 36 | IMAGEMODE RGBA 37 | TRANSPARENT ON 38 | FORMATOPTION "PALETTE_FORCE=ON" 39 | FORMATOPTION "PALETTE=palette_rgba.txt" 40 | END 41 | 42 | 43 | LAYER 44 | NAME grey 45 | TYPE raster 46 | STATUS default 47 | DATA data/rgba.tif 48 | END 49 | 50 | LAYER 51 | NAME grid1 52 | TYPE raster 53 | STATUS default 54 | DATA data/grid.gif 55 | END 56 | 57 | END # of map file 58 | -------------------------------------------------------------------------------- /tests/sample_maps/force_pc256.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: force_pc256.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: force_pc256.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | 5 | # 6 | # Tests the quantization option allowing conversion of 7 | # RGB or RGBA images to 8bit just before saving to PNG. 8 | # 9 | # See http://mapserver.gis.umn.edu/bugs/show_bug.cgi?id=1690 10 | # 11 | MAP 12 | 13 | NAME TEST 14 | STATUS ON 15 | SIZE 200 150 16 | EXTENT 0.5 0.5 399.5 299.5 17 | IMAGECOLOR 255 255 0 18 | SHAPEPATH "../gdal" 19 | IMAGETYPE png 20 | 21 | OUTPUTFORMAT 22 | NAME png 23 | DRIVER "AGG/PNG" 24 | EXTENSION "png" 25 | MIMETYPE "image/png" 26 | IMAGEMODE RGB 27 | TRANSPARENT OFF 28 | FORMATOPTION "QUANTIZE_FORCE=ON" 29 | FORMATOPTION "QUANTIZE_DITHER=OFF" 30 | FORMATOPTION "QUANTIZE_COLORS=15" 31 | END 32 | OUTPUTFORMAT 33 | NAME cairopng 34 | DRIVER "CAIRO/PNG" 35 | EXTENSION "png" 36 | MIMETYPE "image/png" 37 | IMAGEMODE RGB 38 | TRANSPARENT OFF 39 | FORMATOPTION "QUANTIZE_FORCE=ON" 40 | FORMATOPTION "QUANTIZE_DITHER=OFF" 41 | FORMATOPTION "QUANTIZE_COLORS=15" 42 | END 43 | 44 | LAYER 45 | NAME grey 46 | TYPE raster 47 | STATUS default 48 | DATA data/grey.tif 49 | END 50 | 51 | LAYER 52 | NAME grid1 53 | TYPE raster 54 | STATUS default 55 | DATA data/grid.gif 56 | END 57 | 58 | END # of map file 59 | -------------------------------------------------------------------------------- /tests/sample_maps/force_pc256_rgba.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: force_pc256_rgba.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: force_pc256_rgba.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | 5 | # 6 | # Tests the quantization option allowing conversion of 7 | # RGB or RGBA images to 8bit just before saving to PNG. 8 | # 9 | # See http://mapserver.gis.umn.edu/bugs/show_bug.cgi?id=1690 10 | # 11 | MAP 12 | 13 | NAME TEST 14 | STATUS ON 15 | SIZE 200 150 16 | EXTENT 0.5 0.5 399.5 299.5 17 | IMAGECOLOR 255 255 0 18 | SHAPEPATH "../gdal" 19 | IMAGETYPE png 20 | 21 | OUTPUTFORMAT 22 | NAME png 23 | DRIVER "AGG/PNG" 24 | EXTENSION "png" 25 | MIMETYPE "image/png" 26 | IMAGEMODE RGBA 27 | TRANSPARENT ON 28 | FORMATOPTION "QUANTIZE_FORCE=ON" 29 | FORMATOPTION "QUANTIZE_DITHER=OFF" 30 | FORMATOPTION "QUANTIZE_COLORS=256" 31 | END 32 | OUTPUTFORMAT 33 | NAME cairopng 34 | DRIVER "CAIRO/PNG" 35 | EXTENSION "png" 36 | MIMETYPE "image/png" 37 | IMAGEMODE RGBA 38 | TRANSPARENT ON 39 | FORMATOPTION "QUANTIZE_FORCE=ON" 40 | FORMATOPTION "QUANTIZE_DITHER=OFF" 41 | FORMATOPTION "QUANTIZE_COLORS=256" 42 | END 43 | 44 | 45 | LAYER 46 | NAME grey 47 | TYPE raster 48 | STATUS default 49 | DATA data/rgba.tif 50 | END 51 | 52 | LAYER 53 | NAME grid1 54 | TYPE raster 55 | STATUS default 56 | DATA data/grid.gif 57 | END 58 | 59 | END # of map file 60 | -------------------------------------------------------------------------------- /tests/sample_maps/gd_png_256_res.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests non-transparent 8bit output via GD with resampling. 4 | # 5 | # NOTE: Input is transparent, but we see through to the opaque background 6 | # set via IMAGECOLOR directive. 7 | # 8 | # REQUIRES: SUPPORTS=PROJ 9 | # 10 | MAP 11 | 12 | NAME TEST 13 | STATUS ON 14 | SIZE 500 500 15 | EXTENT 0.5 0.5 399.5 299.5 16 | IMAGECOLOR 255 255 0 17 | 18 | PROJECTION 19 | "proj=utm" 20 | "zone=12" 21 | "datum=WGS84" 22 | END 23 | 24 | IMAGETYPE png8_t 25 | 26 | OUTPUTFORMAT 27 | NAME png8_t 28 | DRIVER "GD/PNG" 29 | IMAGEMODE PC256 30 | TRANSPARENT OFF 31 | END 32 | 33 | # 34 | # Start of layer definitions 35 | # 36 | 37 | LAYER 38 | NAME grid1 39 | TYPE raster 40 | STATUS default 41 | DATA data/grid.gif 42 | PROJECTION 43 | "proj=utm" 44 | "zone=12" 45 | "ellps=WGS84" 46 | "towgs84=1,0,0" 47 | END 48 | END 49 | 50 | END # of map file 51 | -------------------------------------------------------------------------------- /tests/sample_maps/gd_png_tr_256.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests transparent 8bit output via GD without resampling. 3 | # 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 500 500 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE png8_t 13 | 14 | OUTPUTFORMAT 15 | NAME png8_t 16 | DRIVER "GD/PNG" 17 | IMAGEMODE PC256 18 | TRANSPARENT ON 19 | END 20 | 21 | # 22 | # Start of layer definitions 23 | # 24 | 25 | LAYER 26 | NAME grid1 27 | TYPE raster 28 | STATUS default 29 | DATA data/grid.gif 30 | END 31 | 32 | END # of map file 33 | -------------------------------------------------------------------------------- /tests/sample_maps/gd_png_tr_256_res.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests transparent 8bit output via GD with resampling. 3 | # 4 | # REQUIRES: SUPPORTS=PROJ 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 500 500 11 | EXTENT 0.5 0.5 399.5 299.5 12 | IMAGECOLOR 255 255 0 13 | 14 | PROJECTION 15 | "proj=utm" 16 | "zone=12" 17 | "datum=WGS84" 18 | END 19 | 20 | OUTPUTFORMAT 21 | NAME png8_t 22 | DRIVER "GDAL/PNG" 23 | IMAGEMODE PC256 24 | TRANSPARENT ON 25 | END 26 | 27 | # 28 | # Start of layer definitions 29 | # 30 | 31 | LAYER 32 | NAME grid1 33 | TYPE raster 34 | STATUS default 35 | DATA data/grid.gif 36 | PROJECTION 37 | "proj=utm" 38 | "zone=12" 39 | "ellps=WGS84" 40 | "towgs84=1,0,0" 41 | END 42 | END 43 | 44 | END # of map file 45 | -------------------------------------------------------------------------------- /tests/sample_maps/gdal_png_256_res.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests non-transparent 8bit output via GDAL with resampling. 4 | # 5 | # NOTE: Input is transparent, but we see through to the opaque background 6 | # set via IMAGECOLOR directive. This file also tests all-in-one projection 7 | # definition strings. 8 | # 9 | # REQUIRES: SUPPORTS=PROJ 10 | # 11 | MAP 12 | 13 | NAME TEST 14 | STATUS ON 15 | SIZE 500 500 16 | EXTENT 0.5 0.5 399.5 299.5 17 | IMAGECOLOR 255 255 0 18 | 19 | PROJECTION 20 | "proj=utm" 21 | "zone=12" 22 | "datum=WGS84" 23 | END 24 | 25 | IMAGETYPE png8_t 26 | 27 | OUTPUTFORMAT 28 | NAME png8_t 29 | DRIVER "GDAL/PNG" 30 | IMAGEMODE PC256 31 | TRANSPARENT OFF 32 | END 33 | 34 | # 35 | # Start of layer definitions 36 | # 37 | 38 | LAYER 39 | NAME grid1 40 | TYPE raster 41 | STATUS default 42 | DATA data/grid.gif 43 | PROJECTION 44 | "+proj=utm +zone=12 +ellps=WGS84 +towgs84=1,0,0" 45 | END 46 | END 47 | 48 | END # of map file 49 | -------------------------------------------------------------------------------- /tests/sample_maps/gdal_png_tr_256.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests transparent 8bit output via GDAL without resampling. 4 | # 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 500 500 10 | EXTENT 0.5 0.5 399.5 299.5 11 | IMAGECOLOR 255 255 0 12 | 13 | IMAGETYPE png8_t 14 | 15 | OUTPUTFORMAT 16 | NAME png8_t 17 | DRIVER "GDAL/PNG" 18 | IMAGEMODE PC256 19 | TRANSPARENT ON 20 | END 21 | 22 | # 23 | # Start of layer definitions 24 | # 25 | 26 | LAYER 27 | NAME grid1 28 | TYPE raster 29 | STATUS default 30 | DATA data/grid.gif 31 | END 32 | 33 | END # of map file 34 | -------------------------------------------------------------------------------- /tests/sample_maps/gdal_png_tr_256_res.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests transparent 8bit output via GDAL with resampling. 4 | # 5 | # REQUIRES: SUPPORTS=PROJ 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 500 500 12 | EXTENT 0.5 0.5 399.5 299.5 13 | IMAGECOLOR 255 255 0 14 | 15 | PROJECTION 16 | "proj=utm" 17 | "zone=12" 18 | "datum=WGS84" 19 | END 20 | 21 | IMAGETYPE png8_t 22 | 23 | OUTPUTFORMAT 24 | NAME png8_t 25 | DRIVER "GDAL/PNG" 26 | IMAGEMODE PC256 27 | TRANSPARENT ON 28 | END 29 | 30 | # 31 | # Start of layer definitions 32 | # 33 | 34 | LAYER 35 | NAME grid1 36 | TYPE raster 37 | STATUS default 38 | DATA data/grid.gif 39 | PROJECTION 40 | "proj=utm" 41 | "zone=12" 42 | "ellps=WGS84" 43 | "towgs84=1,0,0" 44 | END 45 | END 46 | 47 | END # of map file 48 | -------------------------------------------------------------------------------- /tests/sample_maps/geopdf.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: geopdf-iso.pdf [MAP2IMG] -m [MAPFILE] -i geopdfiso -o [RESULT] 2 | # RUN_PARMS: geopdf-ogc.pdf [MAP2IMG] -m [MAPFILE] -i geopdfogc -o [RESULT] 3 | 4 | MAP 5 | IMAGECOLOR 255 255 255 6 | IMAGETYPE "png" 7 | NAME "mf" 8 | SIZE 256 256 9 | EXTENT -111.096824 60.728514 -106.92812 64.897218 10 | STATUS ON 11 | UNITS DD 12 | 13 | PROJECTION 14 | "init=epsg:4326" 15 | END # PROJECTION 16 | 17 | OUTPUTFORMAT 18 | NAME "geopdfiso" 19 | DRIVER "cairo/pdf" 20 | IMAGEMODE RGB 21 | FORMATOPTION "GEO_ENCODING=ISO32000" 22 | FORMATOPTION "METADATA_ITEM:CREATOR=MapServer, with GDAL >= 1.10" 23 | END 24 | OUTPUTFORMAT 25 | NAME "geopdfogc" 26 | DRIVER "cairo/pdf" 27 | IMAGEMODE RGB 28 | FORMATOPTION "GEO_ENCODING=OGC_BP" 29 | END 30 | 31 | LAYER 32 | NAME "STNRY WK" 33 | TYPE LINE 34 | STATUS DEFAULT 35 | FEATURE 36 | POINTS 37 | -101.0 61.0 38 | -103.0 61.0 39 | -106.0 61.0 40 | -112.0 61.0 41 | -115.0 61.0 42 | -119.0 61.0 43 | -123.0 61.0 44 | END #POINTS 45 | END #FEATURE 46 | CLASS 47 | STYLE 48 | COLOR 255 0 0 49 | WIDTH 2 50 | PATTERN 30 30 END 51 | END 52 | END 53 | END 54 | END #MAP 55 | -------------------------------------------------------------------------------- /tests/sample_maps/getstyles_text.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test Text Expressions 3 | # 4 | # REQUIRES: INPUT=GDAL OUTPUT=PNG SUPPORTS=WMS 5 | # 6 | # RUN_PARMS: map_style_text.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3&REQUEST=GetMap&CRS=EPSG:4326&BBOX=42,-5,52,10&FORMAT=image/png&WIDTH=200&HEIGHT=200&LAYERS=multiplot,lline&STYLES=" > [RESULT_DEMIME] 7 | # RUN_PARMS: map_style_text.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3&REQUEST=GetStyles&LAYERS=multiplot,lline&STYLES=" > [RESULT_DEMIME] 8 | # 9 | 10 | MAP 11 | 12 | INCLUDE "data/general.map.include" 13 | INCLUDE "data/layer_lline.map.include" 14 | INCLUDE "data/layer_multiplot.map.include" 15 | 16 | END 17 | 18 | -------------------------------------------------------------------------------- /tests/sample_maps/grayalpha.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests overlaying a greyscale image with an alpha band on a greyscale image 4 | # into an RGBA output. 5 | # 6 | # NOTE: without resampling. 7 | # 8 | MAP 9 | 10 | NAME TEST 11 | STATUS ON 12 | SIZE 400 300 13 | EXTENT 0.5 0.5 399.5 299.5 14 | IMAGECOLOR 255 255 0 15 | 16 | OUTPUTFORMAT 17 | NAME png24_t 18 | DRIVER "GDAL/PNG" 19 | IMAGEMODE RGBA 20 | END 21 | 22 | LAYER 23 | NAME grey 24 | TYPE raster 25 | STATUS default 26 | DATA data/pct22.tif 27 | END 28 | 29 | LAYER 30 | NAME grey_overlay 31 | TYPE raster 32 | STATUS default 33 | DATA data/greyalpha.vrt 34 | END 35 | 36 | END # of map file 37 | -------------------------------------------------------------------------------- /tests/sample_maps/grayalpha_8bit.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests overlaying a greyscale image with an alpha band on a greyscale image 4 | # into an RGBA output. 5 | # 6 | # NOTE: without resampling. 7 | # 8 | MAP 9 | 10 | NAME TEST 11 | STATUS ON 12 | SIZE 400 300 13 | EXTENT 0.5 0.5 399.5 299.5 14 | IMAGECOLOR 255 255 0 15 | 16 | OUTPUTFORMAT 17 | NAME png8 18 | DRIVER "GDAL/PNG" 19 | IMAGEMODE PC256 20 | TRANSPARENT ON 21 | END 22 | 23 | LAYER 24 | NAME grey 25 | TYPE raster 26 | STATUS default 27 | DATA data/pct22.tif 28 | END 29 | 30 | LAYER 31 | NAME grey_overlay 32 | TYPE raster 33 | STATUS default 34 | DATA data/greyalpha.vrt 35 | END 36 | 37 | END # of map file 38 | -------------------------------------------------------------------------------- /tests/sample_maps/grayalpha_plug.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests overlaying a greyscale image with an alpha band on a greyscale image 3 | # into an RGBA output via the AGG2 plugable renderer. 4 | # 5 | # REQUIRES: SUPPORTS=AGG 6 | # 7 | 8 | MAP 9 | 10 | NAME TEST 11 | STATUS ON 12 | SIZE 400 300 13 | EXTENT 0.5 0.5 399.5 299.5 14 | IMAGECOLOR 255 255 0 15 | 16 | OUTPUTFORMAT 17 | NAME png24_t 18 | DRIVER "AGG/PNG" 19 | IMAGEMODE RGBA 20 | END 21 | 22 | LAYER 23 | NAME grey 24 | TYPE raster 25 | STATUS default 26 | DATA data/pct22.tif 27 | END 28 | 29 | LAYER 30 | NAME grey_overlay 31 | TYPE raster 32 | STATUS default 33 | DATA data/greyalpha.vrt 34 | END 35 | 36 | END # of map file 37 | -------------------------------------------------------------------------------- /tests/sample_maps/grid_without_label.map: -------------------------------------------------------------------------------- 1 | # 2 | # REQUIRES: OUTPUT=PNG SUPPORTS=PROJ 3 | # 4 | 5 | MAP 6 | NAME "testMap" 7 | 8 | STATUS ON 9 | SIZE 200 100 10 | EXTENT 0 0 2000 1000 11 | UNITS METERS 12 | IMAGETYPE png 13 | 14 | PROJECTION 15 | "init=epsg:3857" 16 | END 17 | 18 | LAYER 19 | NAME "grid" 20 | PROJECTION 21 | "init=epsg:3857" 22 | END 23 | STATUS ON 24 | TYPE LINE 25 | UNITS METERS 26 | CLASS 27 | STYLE 28 | COLOR "#000000" 29 | OPACITY 100 30 | END 31 | END 32 | GRID 33 | MAXINTERVAL 500 34 | MININTERVAL 500 35 | END 36 | END 37 | 38 | END 39 | -------------------------------------------------------------------------------- /tests/sample_maps/helloworld-gif.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests label printing and GIF output (the default) 3 | # 4 | # RUN_PARMS: helloworld.png 5 | 6 | MAP 7 | NAME HELLO 8 | STATUS ON 9 | EXTENT 59 10 60 11 10 | SIZE 400 300 11 | IMAGECOLOR 200 255 255 12 | DEBUG 5 13 | PROJECTION 14 | "init=epsg:26915" 15 | END 16 | WEB 17 | METADATA 18 | author "me!" 19 | END 20 | END 21 | 22 | LAYER 23 | DEBUG 5 24 | NAME "credits" 25 | 26 | STATUS DEFAULT 27 | TRANSFORM FALSE 28 | TYPE POINT 29 | PROJECTION 30 | "init=epsg:26915" 31 | END 32 | FEATURE 33 | POINTS 34 | 20 25 35 | END 36 | TEXT 'Hello world' 37 | END 38 | TEMPLATE "template/dummy.tmpl" 39 | CLASS 40 | LABEL 41 | TYPE BITMAP 42 | COLOR 0 0 0 43 | END 44 | END 45 | END 46 | END 47 | -------------------------------------------------------------------------------- /tests/sample_maps/indx_q100kpy4_ogr.map: -------------------------------------------------------------------------------- 1 | CONNECTIONTYPE OGR 2 | CONNECTION 'data' 3 | DATA 'indx_q100kpy4' 4 | STATUS OFF 5 | TYPE POLYGON 6 | CLASS 7 | STYLE 8 | OUTLINECOLOR 100 255 100 9 | END 10 | END 11 | TEMPLATE 'void' 12 | -------------------------------------------------------------------------------- /tests/sample_maps/indx_q100kpy4_shapefile.map: -------------------------------------------------------------------------------- 1 | DATA 'data/indx_q100kpy4' 2 | STATUS OFF 3 | TYPE POLYGON 4 | CLASS 5 | STYLE 6 | OUTLINECOLOR 100 255 100 7 | END 8 | END 9 | TEMPLATE 'void' 10 | -------------------------------------------------------------------------------- /tests/sample_maps/issue5558.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests bugfix for https://github.com/mapserver/mapserver/issues/5558 3 | # "Missing LABEL TEXT attribute bind causes crash in map2img" 4 | # 5 | # RUN_PARMS: issue5581-1.png [MAP2IMG] -m [MAPFILE] -o [RESULT] 6 | # RUN_PARMS: issue5581-2.png [MAP2IMG] -c 2 -m [MAPFILE] -o [RESULT] 7 | 8 | MAP 9 | EXTENT 0 0 100 100 10 | SIZE 100 100 11 | LAYER 12 | TYPE POINT 13 | STATUS ON 14 | FEATURE 15 | POINTS 16 | 50 50 17 | END 18 | END 19 | CLASS 20 | LABEL 21 | TEXT "[Missing]" 22 | END 23 | END 24 | END 25 | END 26 | -------------------------------------------------------------------------------- /tests/sample_maps/labels-attribute-alignment-offset.map: -------------------------------------------------------------------------------- 1 | 2 | # RUN_PARMS: label_align_attribute.png [MAP2IMG] -e -0.0 -0.0 1.0 1.0 -s 1000 1000 -l align_attribute -m [MAPFILE] -o [RESULT] 3 | # RUN_PARMS: label_offset_attribute.png [MAP2IMG] -e -0.0 -0.0 1.0 1.0 -s 1000 1000 -l offset_attribute -m [MAPFILE] -o [RESULT] 4 | 5 | map 6 | 7 | imagetype png 8 | size 200 200 9 | extent 0 0 1.5 1.5 10 | shapepath "data" 11 | fontset "../misc/fonts.lst" 12 | symbolset "symbolset" 13 | 14 | layer 15 | type point 16 | status off 17 | data "label_alias_offset.shp" 18 | extent -.5 -.5 1.5 1.5 19 | projection 20 | "init=epsg:4326" 21 | end 22 | name "align_attribute" 23 | labelitem "label" 24 | class 25 | label 26 | font "default" 27 | type truetype 28 | size 9 29 | color 0 0 0 30 | align [align] 31 | end 32 | end 33 | end 34 | layer 35 | type point 36 | status off 37 | data "label_alias_offset.shp" 38 | extent -.5 -.5 1.5 1.5 39 | projection 40 | "init=epsg:4326" 41 | end 42 | name "offset_attribute" 43 | labelitem "label" 44 | class 45 | label 46 | font "default" 47 | type truetype 48 | size 9 49 | color 0 0 0 50 | offset [offset_x] [offset_y] 51 | end 52 | end 53 | end 54 | 55 | 56 | end 57 | -------------------------------------------------------------------------------- /tests/sample_maps/legend_raster_gradient.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: legend_raster_gradient.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=legend&map.imagetype=png" > [RESULT_DEMIME] 2 | 3 | MAP 4 | 5 | NAME TEST 6 | STATUS ON 7 | SIZE 200 150 8 | EXTENT 0.5 0.5 399.5 299.5 9 | IMAGECOLOR 255 255 0 10 | 11 | IMAGETYPE png24_t 12 | 13 | OUTPUTFORMAT 14 | NAME png24_t 15 | DRIVER "GDAL/PNG" 16 | IMAGEMODE RGBA 17 | TRANSPARENT ON 18 | END 19 | 20 | LAYER 21 | NAME rgb 22 | TYPE raster 23 | STATUS default 24 | DATA ../gdal/data/rgba.tif 25 | PROCESSING "BANDS=1,2,3" 26 | 27 | CLASS 28 | NAME "" 29 | EXPRESSION ([pixel] >= 0.01 AND [pixel] < 0.05) 30 | STYLE 31 | COLORRANGE 0 0 0 255 255 255 32 | DATARANGE 0.01 0.05 33 | END 34 | END 35 | 36 | END 37 | 38 | END # of map file 39 | -------------------------------------------------------------------------------- /tests/sample_maps/line_aliased.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: line_aliased.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # 3 | map 4 | 5 | imagetype png 6 | size 400 300 7 | extent -166.245673 -55.551347 174.019748 53.883753 8 | shapepath "../misc/data" 9 | fontset "../misc/fonts.lst" 10 | symbolset "symbolset" 11 | 12 | OUTPUTFORMAT 13 | NAME "png" 14 | DRIVER AGG/PNG 15 | MIMETYPE "image/png" 16 | IMAGEMODE RGBA 17 | EXTENSION "png" 18 | FORMATOPTION "GAMMA=1.0" 19 | END 20 | 21 | layer 22 | type line 23 | data "testlines" 24 | status default 25 | name "lines" 26 | class 27 | style 28 | color 128 128 128 29 | width 5 30 | ANTIALIAS FALSE 31 | end 32 | end 33 | end 34 | 35 | end 36 | -------------------------------------------------------------------------------- /tests/sample_maps/line_antialiased.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: line_anti_aliased.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # 3 | map 4 | 5 | imagetype png 6 | size 400 300 7 | extent -166.245673 -55.551347 174.019748 53.883753 8 | shapepath "../misc/data" 9 | fontset "../misc/fonts.lst" 10 | symbolset "symbolset" 11 | 12 | OUTPUTFORMAT 13 | NAME "png" 14 | DRIVER AGG/PNG 15 | MIMETYPE "image/png" 16 | IMAGEMODE RGBA 17 | EXTENSION "png" 18 | FORMATOPTION "GAMMA=1.0" 19 | END 20 | 21 | layer 22 | type line 23 | data "testlines" 24 | status default 25 | name "lines" 26 | class 27 | style 28 | color 128 128 128 29 | width 5 30 | ANTIALIAS TRUE 31 | end 32 | end 33 | end 34 | 35 | end 36 | -------------------------------------------------------------------------------- /tests/sample_maps/line_label_auto.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: line_label_auto.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: line_label_auto.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: line_label_auto.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: line_label_auto.json [MAP2IMG] -m [MAPFILE] -i json -o [RESULT] 5 | # RUN_PARMS: line_label_auto.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 6 | # 7 | map 8 | 9 | imagetype png 10 | size 400 300 11 | extent -166.245673 -55.551347 174.019748 53.883753 12 | shapepath "../misc/data" 13 | fontset "../misc/fonts.lst" 14 | symbolset "symbolset" 15 | 16 | 17 | layer 18 | type line 19 | data "testlines" 20 | status default 21 | name "lines" 22 | class 23 | text "label text" 24 | style 25 | color 0 0 255 26 | width 5 27 | end 28 | style 29 | color 255 255 255 30 | width 3 31 | end 32 | label 33 | type truetype 34 | font "default" 35 | size 8 36 | angle auto 37 | color 0 0 0 38 | outlinecolor 255 255 255 39 | outlinewidth 3 40 | end 41 | end 42 | end 43 | 44 | end 45 | 46 | -------------------------------------------------------------------------------- /tests/sample_maps/line_label_follow_offsetted.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: line_label_follow_offsetted.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: line_label_follow_offsetted.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: line_label_follow_offsetted.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: line_label_follow_offsetted.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | map 7 | 8 | imagetype png 9 | size 400 300 10 | extent -166.245673 -55.551347 174.019748 53.883753 11 | shapepath "../misc/data" 12 | fontset "../misc/fonts.lst" 13 | symbolset "symbolset" 14 | 15 | 16 | layer 17 | type line 18 | data "testlines" 19 | status default 20 | name "lines" 21 | class 22 | text "label text" 23 | style 24 | color 0 0 255 25 | width 5 26 | end 27 | style 28 | color 255 255 255 29 | width 3 30 | end 31 | label 32 | type truetype 33 | font "default" 34 | size 8 35 | angle follow 36 | offset 5 -99 37 | color 0 0 0 38 | outlinecolor 255 255 255 39 | outlinewidth 3 40 | maxoverlapangle 45 41 | end 42 | end 43 | end 44 | 45 | end 46 | -------------------------------------------------------------------------------- /tests/sample_maps/line_marker_pixmap.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: line_marker_pixmap.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: line_marker_pixmap.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: line_marker_pixmap.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: line_marker_pixmap.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | map 7 | 8 | imagetype png 9 | size 400 300 10 | extent -166.245673 -55.551347 174.019748 53.883753 11 | shapepath "../misc/data" 12 | fontset "../misc/fonts.lst" 13 | symbolset "symbolset" 14 | 15 | SYMBOL 16 | NAME "7" 17 | TYPE PIXMAP 18 | image "../misc/data/gdalicon.png" 19 | END 20 | 21 | layer 22 | type line 23 | data "testlines" 24 | status default 25 | name "lines" 26 | class 27 | style 28 | width 1 29 | color 0 0 0 30 | end 31 | style 32 | symbol "7" 33 | gap 50 34 | end 35 | end 36 | end 37 | 38 | end 39 | -------------------------------------------------------------------------------- /tests/sample_maps/line_offset_clipped_to_multiline.map: -------------------------------------------------------------------------------- 1 | # REQUIRES: INPUT=SHAPE OUTPUT=PNG 2 | # 3 | # Test shifted offset when line is being clipped to a multi-line containing multi-lines. 4 | # 5 | 6 | MAP 7 | EXTENT 387200 6544755 388224 6545779 8 | SIZE 128 128 9 | IMAGETYPE png 10 | 11 | LAYER 12 | NAME "Test" 13 | STATUS ON 14 | TYPE LINE 15 | FEATURE 16 | POINTS 17 | 387184.7628 6544765.9766500005 18 | 387189.844 6544759.04235 19 | 387215.864 6544756.3572 20 | 387212.7508 6544765.81515 21 | 387183.058 6544782.9486 22 | 387186.706 6544811.9778 23 | 389248 6546803 24 | END 25 | END 26 | 27 | CLASS 28 | STYLE 29 | COLOR 255 0 0 30 | OFFSET -1 -99 31 | END 32 | END 33 | END 34 | END -------------------------------------------------------------------------------- /tests/sample_maps/line_pattern.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: line_pattern.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: line_pattern.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: line_pattern.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: line_pattern.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | map 7 | 8 | imagetype png 9 | size 400 300 10 | extent -166.245673 -55.551347 174.019748 53.883753 11 | shapepath "../misc/data" 12 | fontset "../misc/fonts.lst" 13 | symbolset "symbolset" 14 | 15 | 16 | layer 17 | type line 18 | data "testlines" 19 | status default 20 | name "lines" 21 | class 22 | style 23 | color 0 0 255 24 | width 3 25 | linecap butt 26 | pattern 12 6 6 6 end 27 | end 28 | end 29 | end 30 | 31 | end 32 | -------------------------------------------------------------------------------- /tests/sample_maps/line_simple.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: line_simple.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: line_simple.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: line_simple.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: line_simple.json [MAP2IMG] -m [MAPFILE] -i json -o [RESULT] 5 | # RUN_PARMS: line_simple.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 6 | # RUN_PARMS: line_simple.cairo.jpg [MAP2IMG] -m [MAPFILE] -i cairojpeg -o [RESULT] 7 | # 8 | map 9 | 10 | imagetype png 11 | size 400 300 12 | extent -166.245673 -55.551347 174.019748 53.883753 13 | shapepath "../misc/data" 14 | fontset "../misc/fonts.lst" 15 | symbolset "symbolset" 16 | 17 | OUTPUTFORMAT 18 | NAME "cairojpeg" 19 | DRIVER "cairo/jpeg" 20 | FORMATOPTION "QUALITY=93" 21 | IMAGEMODE RGB 22 | END 23 | 24 | layer 25 | type line 26 | data "testlines" 27 | status default 28 | name "lines" 29 | class 30 | style 31 | color 0 0 255 32 | width 1 33 | end 34 | end 35 | end 36 | 37 | end 38 | -------------------------------------------------------------------------------- /tests/sample_maps/listexpression.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test on RFC95 list expressions 3 | # 4 | # 5 | MAP 6 | 7 | NAME DEMO 8 | STATUS ON 9 | SIZE 150 150 10 | EXTENT 2253355.750000 -76361.773438 2447648.500000 515489.031250 11 | UNITS METERS 12 | SHAPEPATH "data" 13 | IMAGECOLOR 255 255 255 14 | IMAGETYPE png 15 | 16 | 17 | LAYER 18 | NAME charts 19 | 20 | TYPE POLYGON 21 | STATUS DEFAULT 22 | DATA chartlayer 23 | 24 | CLASSITEM "V1" 25 | LABELITEM "V1" 26 | 27 | CLASS 28 | EXPRESSION {70,960,00,17,13940} 29 | STYLE 30 | COLOR 255 0 0 31 | END 32 | LABEL 33 | COLOR 0 0 0 34 | SIZE tiny 35 | END 36 | END 37 | CLASS 38 | STYLE 39 | COLOR 0 255 0 40 | END 41 | LABEL 42 | COLOR 0 0 0 43 | SIZE tiny 44 | END 45 | END 46 | END 47 | 48 | 49 | 50 | 51 | END # Map File 52 | -------------------------------------------------------------------------------- /tests/sample_maps/lon_wrap_180.map: -------------------------------------------------------------------------------- 1 | # Test behaviour with a projection with lon_wrap=180 2 | 3 | MAP 4 | 5 | NAME TEST 6 | STATUS ON 7 | SIZE 40 20 8 | EXTENT -180 -89.9999 180 90 9 | IMAGECOLOR 0 0 0 10 | 11 | PROJECTION 12 | "init=epsg:4326" 13 | END 14 | 15 | OUTPUTFORMAT 16 | NAME "png" 17 | DRIVER AGG/PNG 18 | MIMETYPE "image/png" 19 | IMAGEMODE RGBA 20 | EXTENSION "png" 21 | END 22 | 23 | LAYER 24 | NAME test 25 | TYPE RASTER 26 | STATUS default 27 | DATA "data/lon_wrap_180.asc" 28 | PROJECTION 29 | "proj=longlat" 30 | "datum=WGS84" 31 | "lon_wrap=180" 32 | "no_defs" 33 | END 34 | END 35 | 36 | END # of map file 37 | -------------------------------------------------------------------------------- /tests/sample_maps/lon_wrap_180_covering_more_than_360deg.map: -------------------------------------------------------------------------------- 1 | # Test behaviour with a projection with lon_wrap=180 2 | 3 | MAP 4 | 5 | NAME TEST 6 | STATUS ON 7 | SIZE 40 20 8 | EXTENT -180 -89.9999 180 90 9 | IMAGECOLOR 0 0 0 10 | 11 | PROJECTION 12 | "init=epsg:4326" 13 | END 14 | 15 | OUTPUTFORMAT 16 | NAME "png" 17 | DRIVER AGG/PNG 18 | MIMETYPE "image/png" 19 | IMAGEMODE RGBA 20 | EXTENSION "png" 21 | END 22 | 23 | LAYER 24 | NAME test 25 | TYPE RASTER 26 | STATUS default 27 | DATA "data/lon_wrap_180_covering_more_than_360deg.asc" 28 | PROJECTION 29 | "proj=longlat" 30 | "datum=WGS84" 31 | "lon_wrap=180" 32 | "no_defs" 33 | END 34 | END 35 | 36 | END # of map file 37 | -------------------------------------------------------------------------------- /tests/sample_maps/lut_1_crv.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Test GIMP curve file support: single curve. 4 | # 5 | MAP 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 300 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | OUTPUTFORMAT 13 | NAME png8_t 14 | DRIVER "GDAL/PNG" 15 | IMAGEMODE PC256 16 | END 17 | 18 | LAYER 19 | NAME grey 20 | TYPE raster 21 | STATUS default 22 | DATA data/grey.tif 23 | PROCESSING "LUT=data/munich_1.crv" 24 | END 25 | 26 | END # of map file 27 | -------------------------------------------------------------------------------- /tests/sample_maps/lut_float.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Test an inline curve on a one band floating point file. The LUT is 4 | # applied *after* scaling to 8bit. 5 | # 6 | # 7 | MAP 8 | NAME TEST 9 | STATUS ON 10 | SIZE 400 300 11 | EXTENT 0.5 0.5 399.5 299.5 12 | IMAGECOLOR 255 255 0 13 | 14 | OUTPUTFORMAT 15 | NAME png8_t 16 | DRIVER "GDAL/PNG" 17 | IMAGEMODE PC256 18 | END 19 | 20 | LAYER 21 | NAME grey 22 | TYPE raster 23 | STATUS default 24 | DATA data/float.tif 25 | PROCESSING "SCALE=0,60" 26 | PROCESSING "LUT_1=0:0,127:255" 27 | END 28 | 29 | END # of map file 30 | -------------------------------------------------------------------------------- /tests/sample_maps/lut_inline.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Test LUT (RFC GIMP curve file support: 3 curve. 4 | # 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 400 300 10 | EXTENT 0.5 0.5 399.5 299.5 11 | IMAGECOLOR 255 255 0 12 | 13 | IMAGETYPE PNG24 14 | 15 | LAYER 16 | NAME grey 17 | TYPE raster 18 | STATUS default 19 | DATA data/rgb.tif 20 | PROCESSING "LUT_1=100:30,160:128,210:200" 21 | PROCESSING "LUT_2=128:196" 22 | END 23 | 24 | END # of map file 25 | -------------------------------------------------------------------------------- /tests/sample_maps/lut_inline_12bits.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Test 16-bit (actually 12-bit) LUT 4 | # 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 400 300 10 | EXTENT 0.5 0.5 399.5 299.5 11 | IMAGECOLOR 255 255 0 12 | 13 | IMAGETYPE PNG24 14 | 15 | LAYER 16 | NAME grey 17 | TYPE raster 18 | STATUS default 19 | DATA data/rgb_12bit.tif 20 | PROCESSING "LUT_1=1605:30,2569:128,3372:200,4095:255" 21 | PROCESSING "LUT_2=2055:196,4095:255" 22 | PROCESSING "LUT_3=0:0,4095:255" 23 | END 24 | 25 | END # of map file 26 | -------------------------------------------------------------------------------- /tests/sample_maps/lut_rgb_crv.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Test GIMP curve file support: 3 curve. 4 | # 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 400 300 10 | EXTENT 0.5 0.5 399.5 299.5 11 | IMAGECOLOR 255 255 0 12 | 13 | IMAGETYPE PNG24 14 | 15 | LAYER 16 | NAME grey 17 | TYPE raster 18 | STATUS default 19 | DATA data/rgb.tif 20 | PROCESSING "LUT=data/munich_rgb.crv" 21 | END 22 | 23 | END # of map file 24 | -------------------------------------------------------------------------------- /tests/sample_maps/map2img-size.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests map2img binary to ensure size option is respected. 3 | # 4 | # RUN_PARMS: map2img-size.png [MAP2IMG] -s 640 480 -m [MAPFILE] -o [RESULT] 5 | 6 | MAP 7 | NAME HELLO 8 | STATUS ON 9 | EXTENT 59 10 60 11 10 | SIZE 400 300 11 | IMAGECOLOR 200 255 255 12 | 13 | IMAGETYPE png 14 | 15 | LAYER 16 | NAME "credits" 17 | STATUS DEFAULT 18 | TRANSFORM FALSE 19 | TYPE POINT 20 | FEATURE 21 | POINTS 22 | 200 250 23 | END 24 | TEXT 'Hello world' 25 | END 26 | CLASS 27 | LABEL 28 | TYPE BITMAP 29 | COLOR 0 0 0 30 | END 31 | END 32 | END 33 | END 34 | -------------------------------------------------------------------------------- /tests/sample_maps/mask_1.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test support for GDAL masks on a one band file per GDAL RFC 15 and MS #2640 3 | # 4 | MAP 5 | IMAGETYPE PNG24 6 | IMAGECOLOR 255 0 0 7 | SIZE 200 200 8 | EXTENT 0 0 19 19 9 | 10 | LAYER 11 | NAME "TEST" 12 | GROUP "TEST" 13 | STATUS DEFAULT 14 | TYPE RASTER 15 | 16 | # A RGB image with a transparency mask 17 | #DATA "test3_with_1mask_1bit.tif" 18 | 19 | # A grey-level image with a transparency mask 20 | DATA "data/test_with_mask_1bit.tif" 21 | END 22 | 23 | END # end of map file -------------------------------------------------------------------------------- /tests/sample_maps/mask_3.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test support for GDAL masks on a 3 band file per GDAL RFC 15 and MS #2640 3 | # 4 | MAP 5 | IMAGETYPE PNG24 6 | IMAGECOLOR 255 0 0 7 | SIZE 200 200 8 | EXTENT 0 0 19 19 9 | 10 | LAYER 11 | NAME "TEST" 12 | GROUP "TEST" 13 | STATUS DEFAULT 14 | TYPE RASTER 15 | 16 | # A RGB image with a transparency mask 17 | DATA "data/test3_with_1mask_1bit.tif" 18 | 19 | # A grey-level image with a transparency mask 20 | #DATA "data/test_with_mask_1bit.tif" 21 | END 22 | 23 | END # end of map file -------------------------------------------------------------------------------- /tests/sample_maps/mode_tile.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test of mode=tile (CGI "tile mode"). A 256x256 tile should be generated 3 | # in the "gmap" tilemode, reprojected to the Google Mercator (EPSG:3857) 4 | # and displayed at the global extent. 5 | # 6 | # REQUIRES: INPUT=OGR OUTPUT=PNG SUPPORTS=PROJ 7 | # 8 | # RUN_PARMS: mode_tile_output.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&MODE=tile&TILEMODE=gmap&TILE=0+0+0&LAYERS=canada-poly" > [RESULT_DEMIME] 9 | # RUN_PARMS: mode_tile_output_512.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&MODE=tile&TILEMODE=gmap&TILE=0+0+0&TILESIZE=512+512&LAYERS=canada-poly" > [RESULT_DEMIME] 10 | # 11 | MAP 12 | NAME "MODE_TILE_TEST" 13 | IMAGETYPE PNG 14 | EXTENT -140.992892 41.976786 -55.630945 71.990315 15 | SIZE 400 400 16 | 17 | PROJECTION 18 | "init=epsg:4326" 19 | END #projection 20 | 21 | LAYER 22 | NAME "canada-poly" 23 | TYPE POLYGON 24 | STATUS DEFAULT 25 | CONNECTIONTYPE OGR 26 | CONNECTION "data/canada.dgn" 27 | DATA "elements" 28 | PROJECTION 29 | "init=epsg:4326" 30 | END #projection 31 | CLASS 32 | STYLE 33 | OUTLINECOLOR 0 0 0 34 | COLOR 120 120 120 35 | END 36 | END #class 37 | END #layer 38 | 39 | END #map 40 | -------------------------------------------------------------------------------- /tests/sample_maps/mssql_connection.map: -------------------------------------------------------------------------------- 1 | CONNECTIONTYPE PLUGIN 2 | PLUGIN "mssql" 3 | CONNECTION "SERVER=(local)\SQL2019;DATABASE=msautotest;uid=sa;pwd=Password12!;" 4 | STATUS OFF 5 | -------------------------------------------------------------------------------- /tests/sample_maps/multipoint.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests multipoint rendering support. 3 | # 4 | # REQUIRES: INPUT=OGR OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | STATUS ON 9 | EXTENT 137 34 138 35 10 | SIZE 200 200 11 | 12 | IMAGETYPE png 13 | 14 | SYMBOL 15 | NAME "cross" 16 | TYPE vector 17 | POINTS 18 | 2 0 19 | 2 4 20 | -99 -99 21 | 0 2 22 | 4 2 23 | END 24 | END 25 | 26 | LAYER 27 | NAME SOUNDG 28 | TYPE POINT 29 | CONNECTIONTYPE OGR 30 | CONNECTION "data/SOUNDG.shp" 31 | DATA "SOUNDG" 32 | STATUS default 33 | CLASSITEM "FID" 34 | CLASS 35 | NAME "test1" 36 | STYLE 37 | COLOR 0 255 0 38 | SYMBOL 'cross' 39 | SIZE 5 40 | END 41 | END 42 | END 43 | 44 | END 45 | -------------------------------------------------------------------------------- /tests/sample_maps/nested_symbolset.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test that nested symbolsets are parsed completely 3 | # 4 | MAP 5 | 6 | IMAGETYPE PNG 7 | SIZE 10 10 8 | EXTENT 0 0 400 300 9 | SHAPEPATH "../misc/data" 10 | FONTSET "../misc/fonts.lst" 11 | SYMBOLSET "root_nested_symbolset" 12 | 13 | LAYER 14 | TYPE POINT 15 | 16 | STATUS ON 17 | CLASS 18 | NAME "test1" 19 | STYLE 20 | SYMBOL "vector arrow" 21 | COLOR 0 0 0 22 | SIZE 5 23 | ANGLE 45 24 | END 25 | END 26 | 27 | FEATURE 28 | POINTS 29 | 200 200 30 | END 31 | END 32 | END 33 | 34 | END 35 | -------------------------------------------------------------------------------- /tests/sample_maps/nodata_8bit.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests support for NODATA used with a single value from an 8bit image. This 4 | # is testing NODATA directive in a non-16bitclassification case. 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 200 150 11 | EXTENT 0.5 0.5 399.5 299.5 12 | IMAGECOLOR 255 255 0 13 | 14 | OUTPUTFORMAT 15 | NAME png8_t 16 | DRIVER "GDAL/PNG" 17 | IMAGEMODE PC256 18 | END 19 | 20 | LAYER 21 | NAME grey 22 | TYPE raster 23 | STATUS default 24 | DATA data/pct22.tif 25 | PROCESSING "NODATA=22" 26 | END 27 | 28 | END # of map file 29 | -------------------------------------------------------------------------------- /tests/sample_maps/nodata_rgb.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test rendering of an RGB image with nodata values that should give 3 | # equivelent processing to "OFFSET 0 0 0". 4 | # 5 | MAP 6 | IMAGETYPE PNG24 7 | IMAGECOLOR 255 255 255 8 | SIZE 100 100 9 | EXTENT 0 -90 180 90 10 | 11 | PROJECTION 12 | "init=epsg:4326" 13 | END 14 | 15 | LAYER 16 | NAME "TEST" 17 | STATUS DEFAULT 18 | TYPE RASTER 19 | DATA "data/red_square.tif" 20 | PROJECTION 21 | "init=epsg:4326" 22 | END 23 | END 24 | 25 | 26 | END # end of map file 27 | -------------------------------------------------------------------------------- /tests/sample_maps/nodata_scaled.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Test unclassified scaled raster with NODATA. 4 | # 5 | 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 200 150 11 | EXTENT 0.5 0.5 399.5 299.5 12 | IMAGECOLOR 255 255 0 13 | 14 | IMAGETYPE png24_t 15 | 16 | OUTPUTFORMAT 17 | NAME png24_t 18 | DRIVER "GD/PNG" 19 | IMAGEMODE PC256 20 | TRANSPARENT OFF 21 | END 22 | 23 | LAYER 24 | NAME rgb 25 | TYPE raster 26 | STATUS default 27 | DATA data/float.tif 28 | PROCESSING "SCALE=AUTO" 29 | PROCESSING "NODATA=-10" 30 | END 31 | 32 | END # of map file 33 | -------------------------------------------------------------------------------- /tests/sample_maps/nonsquare.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test support for generating non-square output pixels. 3 | # 4 | # REQUIRES: SUPPORTS=PROJ 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 500 500 11 | EXTENT 0.2 0.6 99.8 299.4 12 | IMAGECOLOR 255 255 0 13 | 14 | OUTPUTFORMAT 15 | NAME png8_t 16 | DRIVER "GDAL/PNG" 17 | IMAGEMODE PC256 18 | END 19 | 20 | CONFIG MS_NONSQUARE YES 21 | 22 | PROJECTION 23 | "+proj=utm +zone=11 +datum=WGS84" 24 | END 25 | 26 | SCALEBAR 27 | STATUS EMBED 28 | # POSTLABELCACHE TRUE 29 | SIZE 205 10 30 | UNITS METERS 31 | END 32 | 33 | # 34 | # Start of layer definitions 35 | # 36 | 37 | LAYER 38 | NAME grid1 39 | TYPE raster 40 | STATUS default 41 | DATA data/grey.tif 42 | 43 | PROJECTION 44 | "+proj=utm +zone=11 +datum=WGS84" 45 | END 46 | END 47 | 48 | END # of map file 49 | -------------------------------------------------------------------------------- /tests/sample_maps/nonsquare_multiraw.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test support for resampling raw mode images with more than one band. 3 | # 4 | # See bug 1372. 5 | # 6 | # REQUIRES: SUPPORTS=PROJ 7 | # 8 | MAP 9 | 10 | NAME TEST 11 | STATUS ON 12 | SIZE 500 500 13 | EXTENT 0 0 100 300 14 | IMAGECOLOR 255 255 0 15 | 16 | CONFIG MS_NONSQUARE YES 17 | 18 | PROJECTION 19 | "+proj=utm +zone=11 +datum=WGS84" 20 | END 21 | 22 | IMAGETYPE rawout 23 | 24 | OUTPUTFORMAT 25 | NAME rawout 26 | DRIVER "GDAL/PNG" 27 | IMAGEMODE BYTE 28 | FORMATOPTION "BAND_COUNT=3" 29 | END 30 | 31 | # 32 | # Start of layer definitions 33 | # 34 | 35 | LAYER 36 | NAME grid1 37 | TYPE raster 38 | STATUS default 39 | DATA data/rgba.tif 40 | 41 | PROJECTION 42 | "+proj=utm +zone=11 +datum=WGS84" 43 | END 44 | END 45 | 46 | END # of map file 47 | -------------------------------------------------------------------------------- /tests/sample_maps/offsite_8bitgrey.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Test support for OFFSITE on simple greyscale (1 band, no colormap) inputs. 4 | # http://mapserver.gis.umn.edu/bugs/show_bug.cgi?id=2024 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 200 150 11 | EXTENT 0.5 0.5 399.5 299.5 12 | IMAGECOLOR 255 255 0 13 | 14 | OUTPUTFORMAT 15 | NAME png8_t 16 | DRIVER "GDAL/PNG" 17 | IMAGEMODE PC256 18 | END 19 | 20 | LAYER 21 | NAME grey 22 | TYPE raster 23 | STATUS default 24 | DATA data/grey.tif 25 | OFFSITE 255 255 255 26 | END 27 | 28 | END # of map file 29 | -------------------------------------------------------------------------------- /tests/sample_maps/offsite_pct_rgb.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests support for OFFSITE used with RGB value of a colortable entry 4 | # for a pseudocolored input raster (through GDAL). 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 400 300 11 | EXTENT 0.5 0.5 399.5 299.5 12 | IMAGECOLOR 255 255 0 13 | 14 | OUTPUTFORMAT 15 | NAME png8_t 16 | DRIVER "GDAL/PNG" 17 | IMAGEMODE PC256 18 | END 19 | 20 | LAYER 21 | NAME grey 22 | TYPE raster 23 | STATUS default 24 | DATA data/pct22.tif 25 | OFFSITE 184 184 184 26 | END 27 | 28 | END # of map file 29 | -------------------------------------------------------------------------------- /tests/sample_maps/offsite_pct_rgb_torgb.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Tests support for OFFSITE used with RGB value of a colortable entry 4 | # for a pseudocolored input raster (through GDAL), to 24bit output. 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 400 300 11 | EXTENT 0.5 0.5 399.5 299.5 12 | IMAGECOLOR 255 255 0 13 | 14 | IMAGETYPE png24_local 15 | 16 | OUTPUTFORMAT 17 | NAME png24_local 18 | DRIVER "GDAL/PNG" 19 | IMAGEMODE RGB 20 | TRANSPARENT OFF 21 | END 22 | 23 | LAYER 24 | NAME grey 25 | TYPE raster 26 | STATUS default 27 | DATA data/pct22.tif 28 | OFFSITE 184 184 184 29 | END 30 | 31 | END # of map file 32 | -------------------------------------------------------------------------------- /tests/sample_maps/ogr_attrfilter.map: -------------------------------------------------------------------------------- 1 | # 2 | # Simple OGR Render. 3 | # 4 | # REQUIRES: INPUT=OGR OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | STATUS ON 9 | EXTENT 478300 4762880 481650 4765610 10 | SIZE 400 300 11 | 12 | IMAGETYPE png 13 | 14 | LAYER 15 | NAME shppoly 16 | TYPE polygon 17 | CONNECTIONTYPE OGR 18 | CONNECTION "data/shppoly" 19 | DATA "poly" 20 | PROCESSING "NATIVE_FILTER=EAS_ID in (179, 173)" 21 | STATUS default 22 | CLASSITEM "AREA" 23 | CLASS 24 | NAME "test1" 25 | STYLE 26 | COLOR 0 255 0 27 | OUTLINECOLOR 255 0 0 28 | END 29 | END 30 | END 31 | 32 | END 33 | -------------------------------------------------------------------------------- /tests/sample_maps/ogr_direct.map: -------------------------------------------------------------------------------- 1 | # 2 | # Simple OGR Render. 3 | # 4 | # REQUIRES: INPUT=OGR OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | STATUS ON 9 | EXTENT 478300 4762880 481650 4765610 10 | SIZE 400 300 11 | 12 | IMAGETYPE png 13 | 14 | LAYER 15 | NAME shppoly 16 | TYPE polygon 17 | CONNECTIONTYPE OGR 18 | CONNECTION "data/shppoly/poly.shp" 19 | DATA "poly" 20 | STATUS default 21 | CLASSITEM "AREA" 22 | CLASS 23 | NAME "test1" 24 | STYLE 25 | COLOR 0 255 0 26 | OUTLINECOLOR 255 0 0 27 | END 28 | END 29 | END 30 | 31 | END 32 | -------------------------------------------------------------------------------- /tests/sample_maps/ogr_join.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test of OGR SQL JOIN support via MapServer. 3 | # 4 | # A joined field is used for the EXPRESSION used to classify the returned 5 | # polygons. 6 | # 7 | # REQUIRES: INPUT=OGR OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | STATUS ON 12 | EXTENT 478300 4762880 481650 4765610 13 | SIZE 400 300 14 | 15 | IMAGETYPE png 16 | 17 | LAYER 18 | NAME shppoly 19 | TYPE polygon 20 | CONNECTIONTYPE OGR 21 | CONNECTION "data/shppoly" 22 | DATA "SELECT eas_id, idlink.Name FROM poly LEFT JOIN idlink ON poly.eas_id = idlink.eas_id" 23 | STATUS default 24 | CLASSITEM "idlink.Name" 25 | CLASS 26 | NAME "selected" 27 | STYLE 28 | COLOR 0 0 255 29 | OUTLINECOLOR 255 0 0 30 | END 31 | EXPRESSION "_158_" 32 | END 33 | CLASS 34 | NAME "normal" 35 | STYLE 36 | COLOR 0 255 0 37 | OUTLINECOLOR 255 0 0 38 | END 39 | END 40 | END 41 | 42 | END 43 | -------------------------------------------------------------------------------- /tests/sample_maps/ogr_multi_defer.map: -------------------------------------------------------------------------------- 1 | # 2 | # Simple OGR Render. 3 | # 4 | # REQUIRES: INPUT=OGR OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | STATUS ON 9 | EXTENT 478300 4762880 481650 4765610 10 | SIZE 400 300 11 | 12 | IMAGETYPE png 13 | 14 | LAYER 15 | NAME shppoly2 16 | TYPE polygon 17 | CONNECTIONTYPE OGR 18 | CONNECTION "data/shppoly" 19 | PROCESSING "CLOSE_CONNECTION=DEFER" 20 | DATA "poly" 21 | STATUS default 22 | PROCESSING "NATIVE_FILTER=eas_id = 165" 23 | CLASSITEM "AREA" 24 | CLASS 25 | NAME "test1" 26 | STYLE 27 | COLOR 0 0 255 28 | OUTLINECOLOR 255 128 0 29 | END 30 | END 31 | END 32 | 33 | LAYER 34 | NAME shppoly 35 | TYPE polygon 36 | CONNECTIONTYPE OGR 37 | CONNECTION "data/shppoly" 38 | PROCESSING "CLOSE_CONNECTION=DEFER" 39 | DATA "poly" 40 | STATUS default 41 | PROCESSING "NATIVE_FILTER=eas_id != 165" 42 | CLASSITEM "AREA" 43 | CLASS 44 | NAME "test1" 45 | STYLE 46 | COLOR 0 255 0 47 | OUTLINECOLOR 255 0 0 48 | END 49 | END 50 | END 51 | 52 | END 53 | -------------------------------------------------------------------------------- /tests/sample_maps/ogr_query.map: -------------------------------------------------------------------------------- 1 | # 2 | # Simple OGR Render. 3 | # 4 | # REQUIRES: INPUT=OGR OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | STATUS ON 9 | EXTENT 478300 4762880 481650 4765610 10 | SIZE 400 300 11 | 12 | IMAGETYPE png 13 | 14 | LAYER 15 | NAME shppoly 16 | TYPE polygon 17 | TEMPLATE "junk.tmpl" 18 | CONNECTIONTYPE OGR 19 | CONNECTION "../misc/data/shppoly" 20 | DATA "poly" 21 | STATUS default 22 | CLASSITEM "AREA" 23 | CLASS 24 | NAME "test1" 25 | STYLE 26 | COLOR 0 255 0 27 | OUTLINECOLOR 255 0 0 28 | END 29 | END 30 | END 31 | 32 | END 33 | -------------------------------------------------------------------------------- /tests/sample_maps/ogr_select.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test of using OGR SQL SELECT statement in map file. 3 | # 4 | # REQUIRES: INPUT=OGR OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | STATUS ON 9 | EXTENT 478300 4762880 481650 4765610 10 | SIZE 400 300 11 | 12 | IMAGETYPE png 13 | 14 | LAYER 15 | NAME shppoly 16 | TYPE polygon 17 | CONNECTIONTYPE OGR 18 | CONNECTION "data/shppoly" 19 | DATA "select * from poly" 20 | STATUS default 21 | CLASSITEM "AREA" 22 | CLASS 23 | NAME "test1" 24 | STYLE 25 | COLOR 0 255 0 26 | OUTLINECOLOR 255 0 0 27 | END 28 | END 29 | END 30 | 31 | END 32 | -------------------------------------------------------------------------------- /tests/sample_maps/ogr_vrtconnect.map: -------------------------------------------------------------------------------- 1 | # 2 | # Simple OGR Render. 3 | # 4 | # REQUIRES: INPUT=OGR OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | STATUS ON 9 | EXTENT 478300 4762880 481650 4765610 10 | SIZE 400 300 11 | 12 | IMAGETYPE png 13 | 14 | LAYER 15 | NAME shppoly 16 | TYPE polygon 17 | CONNECTIONTYPE OGR 18 | CONNECTION 'data/shppolypoly' 19 | DATA "poly" 20 | STATUS default 21 | CLASSITEM "AREA" 22 | CLASS 23 | NAME "test1" 24 | STYLE 25 | COLOR 0 255 0 26 | OUTLINECOLOR 255 0 0 27 | END 28 | END 29 | END 30 | 31 | END 32 | -------------------------------------------------------------------------------- /tests/sample_maps/ogrbrush.map: -------------------------------------------------------------------------------- 1 | # Test OGR feature style BRUSH parameters 2 | 3 | MAP 4 | EXTENT 0 -1 1 1 5 | SIZE 200 400 6 | 7 | 8 | SYMBOL 9 | NAME "rectsymbol" 10 | TYPE vector 11 | FILLED false 12 | POINTS 13 | 0 10 14 | 0 0 15 | 20 0 16 | 20 10 17 | 0 10 18 | END # POINTS 19 | END # SYMBOL 20 | 21 | LAYER 22 | NAME "test" 23 | CONNECTIONTYPE OGR 24 | CONNECTION "data/ogrbrush.csv" 25 | DATA "ogrbrush" 26 | 27 | TYPE POLYGON 28 | STATUS ON 29 | 30 | STYLEITEM "AUTO" 31 | CLASS 32 | END #CLASS 33 | END 34 | 35 | END 36 | -------------------------------------------------------------------------------- /tests/sample_maps/ogrmultitool.map: -------------------------------------------------------------------------------- 1 | # Test multiple PEN and BRUSH tools, and their priorities 2 | 3 | MAP 4 | EXTENT 0 -1 1 1 5 | SIZE 200 400 6 | 7 | 8 | SYMBOL 9 | NAME "rectsymbol" 10 | TYPE vector 11 | FILLED false 12 | POINTS 13 | 0 10 14 | 0 0 15 | 20 0 16 | 20 10 17 | 0 10 18 | END # POINTS 19 | END # SYMBOL 20 | 21 | LAYER 22 | NAME "test" 23 | CONNECTIONTYPE OGR 24 | CONNECTION "data/ogrmultitool.csv" 25 | DATA "ogrmultitool" 26 | 27 | TYPE POLYGON 28 | STATUS ON 29 | 30 | STYLEITEM "AUTO" 31 | CLASS 32 | END #CLASS 33 | END 34 | 35 | END 36 | -------------------------------------------------------------------------------- /tests/sample_maps/ogrpen.map: -------------------------------------------------------------------------------- 1 | # Test OGR feature style PEN parameters 2 | 3 | MAP 4 | EXTENT 0 -1 1 1 5 | SIZE 200 400 6 | 7 | LAYER 8 | NAME "test" 9 | CONNECTIONTYPE OGR 10 | CONNECTION "data/ogrpen.csv" 11 | DATA "ogrpen" 12 | 13 | TYPE LINE 14 | STATUS ON 15 | 16 | STYLEITEM "AUTO" 17 | CLASS 18 | END #CLASS 19 | END 20 | 21 | END 22 | -------------------------------------------------------------------------------- /tests/sample_maps/ortho.map: -------------------------------------------------------------------------------- 1 | # 2 | # This test excercies the RFC 5 (horizon clipping during reprojection) 3 | # work. Basically the lines and polygons should be clipped at the horizon 4 | # when converting to Ortho projection. 5 | # 6 | # REQUIRES: INPUT=SHAPE OUTPUT=PNG SUPPORTS=PROJ 7 | # 8 | MAP 9 | NAME 'ORTH_TEST' 10 | IMAGETYPE PNG 11 | EXTENT -8000000 -8000000 8000000 8000000 12 | SIZE 400 400 13 | 14 | PROJECTION 15 | "+proj=ortho +lon_0=0 +lat_0=0 +datum=WGS84" 16 | END 17 | 18 | LAYER 19 | NAME "world" 20 | TYPE POLYGON 21 | STATUS DEFAULT 22 | DATA "data/world_testpoly.shp" 23 | PROJECTION 24 | "+proj=latlong +datum=WGS84" 25 | END 26 | CLASS 27 | STYLE 28 | OUTLINECOLOR 255 0 0 29 | COLOR 0 255 0 30 | END 31 | END 32 | END 33 | LAYER 34 | NAME "testlines" 35 | TYPE LINE 36 | STATUS DEFAULT 37 | DATA "data/testlines.shp" 38 | PROJECTION 39 | "+proj=latlong +datum=WGS84" 40 | END 41 | CLASS 42 | STYLE COLOR 255 255 0 END 43 | END 44 | END 45 | END 46 | -------------------------------------------------------------------------------- /tests/sample_maps/plb_embed_legend.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: plb_embed_legend.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: plb_embed_legend.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | # 5 | # Simple test of embedded legend support. 6 | # 7 | # REQUIRES: OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | STATUS ON 12 | EXTENT 478300 4762880 481650 4765610 13 | SIZE 150 60 14 | shapepath "../misc/data" 15 | IMAGETYPE png 16 | fontset "../misc/fonts.lst" 17 | imagecolor 255 200 0 18 | 19 | 20 | LEGEND 21 | POSITION LR 22 | STATUS EMBED 23 | imagecolor 255 255 255 24 | label 25 | type truetype 26 | color 0 0 0 27 | font "default" 28 | size 9 29 | end 30 | postlabelcache true 31 | END 32 | 33 | LAYER 34 | NAME shppoly 35 | TYPE polygon 36 | DATA "shppoly/poly.shp" 37 | STATUS default 38 | CLASSITEM "AREA" 39 | CLASS 40 | NAME "Big" 41 | EXPRESSION ([AREA] >= 500000) 42 | STYLE 43 | COLOR 255 0 0 44 | OUTLINECOLOR 0 0 0 45 | END 46 | END 47 | CLASS 48 | NAME "Medium" 49 | EXPRESSION ([AREA] >= 100000 and [AREA] < 500000) 50 | STYLE 51 | COLOR 0 255 0 52 | OUTLINECOLOR 0 0 0 53 | END 54 | END 55 | CLASS 56 | NAME "Small" 57 | EXPRESSION ([AREA] < 100000) 58 | STYLE 59 | COLOR 0 0 255 60 | OUTLINECOLOR 0 0 0 61 | END 62 | END 63 | END 64 | 65 | END 66 | -------------------------------------------------------------------------------- /tests/sample_maps/plb_embed_legend_tr.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: plb_embed_legend_tr.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: plb_embed_legend_tr.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 3 | # 4 | # 5 | # Simple test of embedded legend support. 6 | # 7 | # REQUIRES: OUTPUT=PNG 8 | # 9 | MAP 10 | 11 | STATUS ON 12 | EXTENT 478300 4762880 481650 4765610 13 | SIZE 150 60 14 | shapepath "../misc/data" 15 | IMAGETYPE png 16 | fontset "../misc/fonts.lst" 17 | imagecolor 255 200 0 18 | 19 | LEGEND 20 | POSITION LR 21 | STATUS EMBED 22 | TRANSPARENT ON 23 | postlabelcache true 24 | label 25 | type truetype 26 | color 0 0 0 27 | font "default" 28 | size 9 29 | end 30 | END 31 | 32 | LAYER 33 | NAME shppoly 34 | TYPE polygon 35 | DATA "shppoly/poly.shp" 36 | STATUS default 37 | CLASSITEM "AREA" 38 | CLASS 39 | NAME "Big" 40 | EXPRESSION ([AREA] >= 500000) 41 | STYLE 42 | COLOR 255 0 0 43 | OUTLINECOLOR 0 0 0 44 | END 45 | END 46 | CLASS 47 | NAME "Medium" 48 | EXPRESSION ([AREA] >= 100000 and [AREA] < 500000) 49 | STYLE 50 | COLOR 0 255 0 51 | OUTLINECOLOR 0 0 0 52 | END 53 | END 54 | CLASS 55 | NAME "Small" 56 | EXPRESSION ([AREA] < 100000) 57 | STYLE 58 | COLOR 0 0 255 59 | OUTLINECOLOR 0 0 0 60 | END 61 | END 62 | END 63 | 64 | END 65 | -------------------------------------------------------------------------------- /tests/sample_maps/polygon-as-line.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: polygon-as-line.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: polygon-as-line.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: polygon-as-line.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: polygon-as-line.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # entity-encoded text rendering test. 8 | # this test may potentially segfault 9 | # 10 | # REQUIRES: OUTPUT=PNG 11 | # 12 | MAP 13 | 14 | STATUS ON 15 | EXTENT -125.549477 -69.508628 101.670954 15.840339 16 | SIZE 200 150 17 | FONTSET "../misc/fonts.lst" 18 | IMAGETYPE png24 19 | symbolset "symbolset" 20 | shapepath "../misc/data" 21 | imagecolor 255 255 0 22 | CONFIG MS_ERRORFILE "stderr" 23 | 24 | 25 | 26 | SYMBOL 27 | name "hatch" 28 | type hatch 29 | end 30 | 31 | LAYER 32 | NAME "world" 33 | TYPE polygon 34 | STATUS default 35 | DATA "world_testpoly" 36 | CLASS 37 | NAME "test1" 38 | STYLE 39 | SYMBOL "vector arrow" 40 | SIZE 8 41 | GAP 0 42 | COLOR 0 0 0 43 | END 44 | STYLE 45 | OUTLINECOLOR 180 0 0 46 | WIDTH 1 47 | END 48 | END 49 | END 50 | 51 | END 52 | -------------------------------------------------------------------------------- /tests/sample_maps/polygon-hatch-dashed.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: polygon-hatch-dashed.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: polygon-hatch-dashed.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: polygon-hatch-dashed.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: polygon-hatch-dashed.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # entity-encoded text rendering test. 8 | # this test may potentially segfault 9 | # 10 | # REQUIRES: OUTPUT=PNG 11 | # 12 | MAP 13 | 14 | STATUS ON 15 | EXTENT -125.549477 -69.508628 101.670954 15.840339 16 | SIZE 200 150 17 | FONTSET "../misc/fonts.lst" 18 | IMAGETYPE png24 19 | symbolset "symbolset" 20 | shapepath "../misc/data" 21 | 22 | CONFIG MS_ERRORFILE "stderr" 23 | 24 | 25 | 26 | SYMBOL 27 | name "hatch" 28 | type hatch 29 | end 30 | 31 | LAYER 32 | NAME "world" 33 | TYPE polygon 34 | STATUS default 35 | DATA "world_testpoly" 36 | CLASS 37 | NAME "test1" 38 | STYLE 39 | COLOR 180 0 0 40 | END 41 | STYLE 42 | COLOR 180 180 180 43 | symbol "hatch" 44 | SIZE 20 45 | WIDTH 3 46 | PATTERN 5 2 2 2 END 47 | ANGLE 45 48 | END 49 | END 50 | END 51 | 52 | END 53 | -------------------------------------------------------------------------------- /tests/sample_maps/polygon-hex-alpha.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: polygon-hex-alpha.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # 3 | # 4 | # REQUIRES: OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | STATUS ON 9 | EXTENT -125.549477 -69.508628 101.670954 15.840339 10 | SIZE 200 150 11 | FONTSET "../misc/fonts.lst" 12 | IMAGETYPE png24 13 | symbolset "symbolset" 14 | shapepath "../misc/data" 15 | 16 | CONFIG MS_ERRORFILE "stderr" 17 | 18 | LAYER 19 | NAME "world" 20 | TYPE polygon 21 | STATUS default 22 | DATA "world_testpoly" 23 | CLASS 24 | NAME "hexalpha" 25 | STYLE 26 | COLOR "#ee990033" 27 | END 28 | END 29 | END 30 | 31 | END 32 | -------------------------------------------------------------------------------- /tests/sample_maps/polygon-pixmap.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: polygon-pixmap.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: polygon-pixmap.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: polygon-pixmap.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: polygon-pixmap.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # entity-encoded text rendering test. 8 | # this test may potentially segfault 9 | # 10 | # REQUIRES: OUTPUT=PNG 11 | # 12 | MAP 13 | 14 | STATUS ON 15 | EXTENT -125.549477 -69.508628 101.670954 15.840339 16 | SIZE 200 150 17 | FONTSET "../misc/fonts.lst" 18 | IMAGETYPE png24 19 | symbolset "symbolset" 20 | shapepath "../misc/data" 21 | 22 | CONFIG MS_ERRORFILE "stderr" 23 | 24 | LAYER 25 | NAME "world" 26 | TYPE polygon 27 | STATUS default 28 | DATA "world_testpoly" 29 | CLASSITEM "FID" 30 | CLASS 31 | EXPRESSION "1" 32 | NAME "test1" 33 | STYLE 34 | COLOR 180 180 180 35 | END 36 | STYLE 37 | SYMBOL "gdalicon" 38 | END 39 | END 40 | CLASS 41 | NAME "test1" 42 | STYLE 43 | COLOR 180 180 100 44 | END 45 | STYLE 46 | SYMBOL "gdalicon" 47 | SIZE 15 48 | ANGLE 45 49 | END 50 | END 51 | END 52 | 53 | END 54 | -------------------------------------------------------------------------------- /tests/sample_maps/polygon-simple.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: polygon-simple.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: polygon-simple.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: polygon-simple.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: polygon-simple.json [MAP2IMG] -m [MAPFILE] -i json -o [RESULT] 5 | # RUN_PARMS: polygon-simple.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 6 | # 7 | # 8 | # entity-encoded text rendering test. 9 | # this test may potentially segfault 10 | # 11 | # REQUIRES: OUTPUT=PNG 12 | # 13 | MAP 14 | 15 | STATUS ON 16 | EXTENT -125.549477 -69.508628 101.670954 15.840339 17 | SIZE 200 150 18 | FONTSET "../misc/fonts.lst" 19 | IMAGETYPE png24 20 | symbolset "symbolset" 21 | shapepath "../misc/data" 22 | 23 | CONFIG MS_ERRORFILE "stderr" 24 | 25 | LAYER 26 | NAME "world" 27 | TYPE polygon 28 | STATUS default 29 | DATA "world_testpoly" 30 | CLASS 31 | text "country name" 32 | NAME "test1" 33 | STYLE 34 | COLOR 180 180 180 35 | END 36 | LABEL 37 | position lc 38 | FONT "default" 39 | TYPE TRUETYPE 40 | SIZE 8 41 | color 0 0 0 42 | end 43 | END 44 | END 45 | 46 | END 47 | -------------------------------------------------------------------------------- /tests/sample_maps/polygon-ttf.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: polygon-ttf.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: polygon-ttf.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: polygon-ttf.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: polygon-ttf.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # entity-encoded text rendering test. 8 | # this test may potentially segfault 9 | # 10 | # REQUIRES: OUTPUT=PNG 11 | # 12 | MAP 13 | 14 | STATUS ON 15 | EXTENT -125.549477 -69.508628 101.670954 15.840339 16 | SIZE 200 150 17 | FONTSET "../misc/fonts.lst" 18 | IMAGETYPE png24 19 | symbolset "symbolset" 20 | shapepath "../misc/data" 21 | 22 | CONFIG MS_ERRORFILE "stderr" 23 | 24 | LAYER 25 | NAME "world" 26 | TYPE polygon 27 | STATUS default 28 | DATA "world_testpoly" 29 | CLASSITEM "FID" 30 | CLASS 31 | EXPRESSION "1" 32 | NAME "test1" 33 | STYLE 34 | COLOR 180 180 180 35 | END 36 | STYLE 37 | SYMBOL "ttf" 38 | SIZE 8 39 | GAP 3 40 | COLOR 0 0 0 41 | END 42 | END 43 | CLASS 44 | NAME "test1" 45 | STYLE 46 | COLOR 180 180 100 47 | END 48 | STYLE 49 | SYMBOL "ttf" 50 | SIZE 5 51 | ANGLE 45 52 | COLOR 0 0 0 53 | END 54 | END 55 | END 56 | 57 | END 58 | -------------------------------------------------------------------------------- /tests/sample_maps/polygon-vector.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: polygon-vector.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: polygon-vector.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: polygon-vector.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: polygon-vector.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # entity-encoded text rendering test. 8 | # this test may potentially segfault 9 | # 10 | # REQUIRES: OUTPUT=PNG 11 | # 12 | MAP 13 | 14 | STATUS ON 15 | EXTENT -125.549477 -69.508628 101.670954 15.840339 16 | SIZE 200 150 17 | FONTSET "../misc/fonts.lst" 18 | IMAGETYPE png24 19 | symbolset "symbolset" 20 | shapepath "../misc/data" 21 | 22 | CONFIG MS_ERRORFILE "stderr" 23 | 24 | LAYER 25 | NAME "world" 26 | TYPE polygon 27 | STATUS default 28 | DATA "world_testpoly" 29 | CLASSITEM "FID" 30 | CLASS 31 | EXPRESSION "1" 32 | NAME "test1" 33 | STYLE 34 | COLOR 180 180 180 35 | END 36 | STYLE 37 | SYMBOL "vector arrow" 38 | SIZE 8 39 | GAP 0 40 | COLOR 0 0 0 41 | END 42 | END 43 | CLASS 44 | NAME "test1" 45 | STYLE 46 | COLOR 180 180 100 47 | END 48 | STYLE 49 | SYMBOL "vector arrow" 50 | SIZE 16 51 | ANGLE 40 52 | GAP 0 53 | COLOR 0 0 0 54 | END 55 | END 56 | END 57 | 58 | END 59 | -------------------------------------------------------------------------------- /tests/sample_maps/processing_bands.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test use of the BANDS option via the PROCESSING directive. 3 | # 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 300 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE png24_t 13 | 14 | OUTPUTFORMAT 15 | NAME png24_t 16 | DRIVER "GDAL/PNG" 17 | IMAGEMODE RGBA 18 | TRANSPARENT ON 19 | END 20 | 21 | LAYER 22 | NAME rgb 23 | TYPE raster 24 | STATUS default 25 | DATA data/rgba.tif 26 | PROCESSING "BANDS=4,4,4,4" 27 | END 28 | 29 | END # of map file 30 | -------------------------------------------------------------------------------- /tests/sample_maps/processing_scale_auto.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test use of the BANDS option via the PROCESSING directive. 3 | # 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 300 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE png24_t 13 | 14 | OUTPUTFORMAT 15 | NAME png24_t 16 | DRIVER "GD/PNG" 17 | IMAGEMODE PC256 18 | TRANSPARENT OFF 19 | END 20 | 21 | LAYER 22 | NAME rgb 23 | TYPE raster 24 | STATUS default 25 | DATA data/float.tif 26 | PROCESSING "SCALE=AUTO" 27 | END 28 | 29 | END # of map file 30 | -------------------------------------------------------------------------------- /tests/sample_maps/quantized.map: -------------------------------------------------------------------------------- 1 | #bug 3848, test quantization on image with many colors 2 | 3 | MAP 4 | 5 | NAME TEST 6 | STATUS ON 7 | SIZE 400 400 8 | EXTENT 0.5 0.5 399.5 399.5 9 | IMAGECOLOR 255 255 0 10 | 11 | IMAGETYPE png_q 12 | 13 | OUTPUTFORMAT 14 | NAME png_q 15 | DRIVER AGG/PNG 16 | IMAGEMODE RGB 17 | FORMATOPTION "QUANTIZE_FORCE=on" 18 | FORMATOPTION "QUANTIZE_NEW=on" 19 | END 20 | 21 | LAYER 22 | NAME rgb 23 | TYPE raster 24 | STATUS default 25 | DATA data/colorwheel.png 26 | END 27 | 28 | END # of map file 29 | -------------------------------------------------------------------------------- /tests/sample_maps/quoted_text.MAP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/tests/sample_maps/quoted_text.MAP -------------------------------------------------------------------------------- /tests/sample_maps/raster_simple.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: raster_simple.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: raster_simple.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: raster_simple.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: raster_simple.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # Test use of 24bit images with a dummy class used to populate the legend. 8 | # The image should come through as 24bit since there is no expression in the 9 | # class. 10 | # 11 | MAP 12 | 13 | NAME TEST 14 | STATUS ON 15 | SIZE 200 150 16 | EXTENT 0.5 0.5 399.5 299.5 17 | IMAGECOLOR 255 255 0 18 | 19 | IMAGETYPE png24_t 20 | 21 | OUTPUTFORMAT 22 | NAME png24_t 23 | DRIVER "GDAL/PNG" 24 | IMAGEMODE RGBA 25 | TRANSPARENT ON 26 | END 27 | 28 | LAYER 29 | NAME rgb 30 | TYPE raster 31 | STATUS default 32 | DATA ../gdal/data/rgba.tif 33 | PROCESSING "BANDS=1,2,3" 34 | PROCESSING "USE_MASK_BAND=NO" 35 | CLASS 36 | KEYIMAGE "data/grid.gif" 37 | END 38 | END 39 | 40 | END # of map file 41 | -------------------------------------------------------------------------------- /tests/sample_maps/raster_simple_opacity.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: raster_simple_opacity.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: raster_simple_opacity.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: raster_simple_opacity.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: raster_simple_opacity.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # Test use of 24bit images with a dummy class used to populate the legend. 8 | # The image should come through as 24bit since there is no expression in the 9 | # class. 10 | # 11 | MAP 12 | 13 | NAME TEST 14 | STATUS ON 15 | SIZE 200 150 16 | EXTENT 0.5 0.5 399.5 299.5 17 | IMAGECOLOR 255 255 0 18 | 19 | IMAGETYPE png24_t 20 | 21 | OUTPUTFORMAT 22 | NAME png24_t 23 | DRIVER "GDAL/PNG" 24 | IMAGEMODE RGBA 25 | TRANSPARENT ON 26 | END 27 | 28 | LAYER 29 | NAME rgb 30 | TYPE raster 31 | STATUS default 32 | DATA ../gdal/data/rgba.tif 33 | PROCESSING "BANDS=1,2,3" 34 | PROCESSING "USE_MASK_BAND=NO" 35 | COMPOSITE 36 | OPACITY 50 37 | END 38 | CLASS 39 | KEYIMAGE "data/grid.gif" 40 | END 41 | END 42 | 43 | END # of map file 44 | -------------------------------------------------------------------------------- /tests/sample_maps/rawmode_multiband.map: -------------------------------------------------------------------------------- 1 | # 2 | # Simple test of classification methods on a floating point input. 3 | # 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 300 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE gtiff16 13 | 14 | OUTPUTFORMAT 15 | NAME gtiff16 16 | DRIVER "GDAL/GTiff" 17 | IMAGEMODE INT16 18 | FORMATOPTION "BAND_COUNT=2" 19 | END 20 | 21 | LAYER 22 | NAME grid1 23 | TYPE raster 24 | STATUS default 25 | PROCESSING "BANDS=1,1" 26 | DATA data/float.tif 27 | END 28 | 29 | END # of map file 30 | -------------------------------------------------------------------------------- /tests/sample_maps/rawmode_nodata.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test rawmode nodata handling when done directly (no resampler). 3 | # 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 40 30 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE grid 13 | 14 | OUTPUTFORMAT 15 | NAME grid 16 | DRIVER "GDAL/AAIGRID" 17 | IMAGEMODE INT16 18 | FORMATOPTION "NULLVALUE=-99" 19 | END 20 | 21 | LAYER 22 | NAME grid1 23 | TYPE raster 24 | STATUS default 25 | PROCESSING "NODATA=24" 26 | DATA data/float.tif 27 | END 28 | 29 | END # of map file 30 | -------------------------------------------------------------------------------- /tests/sample_maps/rawmode_nodata_resample.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test rawmode nodata handling when going through a resampler. 3 | # 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 40 30 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE grid 13 | 14 | OUTPUTFORMAT 15 | NAME grid 16 | DRIVER "GDAL/AAIGRID" 17 | IMAGEMODE INT16 18 | END 19 | 20 | LAYER 21 | NAME grid1 22 | TYPE raster 23 | STATUS default 24 | PROCESSING "NODATA=24" 25 | PROCESSING "RESAMPLE=BILINEAR" 26 | DATA data/float.tif 27 | END 28 | 29 | END # of map file 30 | -------------------------------------------------------------------------------- /tests/sample_maps/reproj.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test supports for image reprojection. 3 | # 4 | # This also incidentally tests the EXTENT keyword for a layer as a source 5 | # of georeferencing (#3402). 6 | # 7 | # REQUIRES: SUPPORTS=PROJ 8 | # 9 | # 10 | MAP 11 | 12 | NAME TEST 13 | STATUS ON 14 | SIZE 200 200 15 | EXTENT 500001 3762155.98 536808.88 3795492.60 16 | IMAGECOLOR 255 255 0 17 | 18 | PROJECTION 19 | "proj=utm" 20 | "zone=11" 21 | "datum=WGS84" 22 | END 23 | 24 | IMAGETYPE png8_t 25 | 26 | OUTPUTFORMAT 27 | NAME png8_t 28 | DRIVER "GD/PNG" 29 | IMAGEMODE PC256 30 | TRANSPARENT OFF 31 | END 32 | 33 | LAYER 34 | NAME grey 35 | TYPE raster 36 | STATUS default 37 | DATA data/grey_raw.tif 38 | PROJECTION 39 | "proj=latlong" 40 | "datum=WGS84" 41 | END 42 | EXTENT -117 34 -116.6 34.3 43 | END 44 | END # of map file 45 | 46 | -------------------------------------------------------------------------------- /tests/sample_maps/reprojection.map: -------------------------------------------------------------------------------- 1 | /* 2 | PURPOSE: test reprojection through MapScript 3 | SOURCE DATA: OSM places for Nova Scotia, 3843 points 4 | in EPSG:4326 5 | DATA FORMAT: SpatiaLite database 6 | */ 7 | 8 | MAP 9 | NAME 'reproj-mapscript' 10 | EXTENT -66.374741 43.400270 -59.697577 50.267922 11 | UNITS DD 12 | SIZE 300 300 13 | IMAGETYPE PNG 14 | 15 | SYMBOL 16 | NAME "circle" 17 | TYPE ellipse 18 | POINTS 1 1 END 19 | FILLED true 20 | END #symbol 21 | 22 | LAYER 23 | NAME "ns-places" 24 | STATUS ON 25 | TYPE POINT 26 | CONNECTIONTYPE OGR 27 | CONNECTION "data/ns.db" 28 | DATA "places" 29 | CLASS 30 | STYLE 31 | COLOR 255 100 100 32 | SYMBOL "circle" 33 | SIZE 5 34 | END #style 35 | END #class 36 | END #layer 37 | 38 | END #map -------------------------------------------------------------------------------- /tests/sample_maps/rgb_16bit.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test a multiband scaled image (16bit). 3 | # 4 | 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 400 300 10 | EXTENT 0.5 0.5 399.5 299.5 11 | IMAGECOLOR 255 255 0 12 | 13 | OUTPUTFORMAT 14 | NAME png24_t 15 | DRIVER "GDAL/PNG" 16 | IMAGEMODE RGB 17 | TRANSPARENT OFF 18 | END 19 | 20 | LAYER 21 | NAME rgb 22 | TYPE raster 23 | STATUS default 24 | DATA data/rgb16.tif 25 | OFFSITE 111 222 111 26 | PROCESSING "SCALE=200,900" 27 | END 28 | 29 | END # of map file 30 | -------------------------------------------------------------------------------- /tests/sample_maps/rgb_overlay.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests overlaying an RGB image with a transparent value on a greyscale image 3 | # into an RGB output. 4 | # 5 | # This test also verifies that the first *user defined* image type is selected, 6 | # rather than using one of the built-ins, if IMAGETYPE is not defined. 7 | # 8 | # NOTE: without resampling. 9 | # 10 | MAP 11 | 12 | NAME TEST 13 | STATUS ON 14 | SIZE 400 300 15 | EXTENT 0.5 0.5 399.5 299.5 16 | IMAGECOLOR 255 255 0 17 | 18 | OUTPUTFORMAT 19 | NAME png24_t 20 | DRIVER "GDAL/PNG" 21 | IMAGEMODE RGB 22 | TRANSPARENT OFF 23 | END 24 | 25 | LAYER 26 | NAME grey 27 | TYPE raster 28 | STATUS default 29 | DATA data/pct22.tif 30 | END 31 | 32 | LAYER 33 | NAME rgb 34 | TYPE raster 35 | STATUS default 36 | DATA data/rgb.tif 37 | OFFSITE 111 222 111 38 | END 39 | 40 | END # of map file 41 | -------------------------------------------------------------------------------- /tests/sample_maps/rgb_overlay_plug.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests overlaying an RGB image with a transparent value on a greyscale image 3 | # into an RGB output via the AGG/plugable rendering mechanism. 4 | # 5 | # NOTE: without resampling. 6 | # 7 | # REQUIRES: SUPPORTS=AGG 8 | # 9 | MAP 10 | 11 | NAME TEST 12 | STATUS ON 13 | SIZE 400 300 14 | EXTENT 0.5 0.5 399.5 299.5 15 | IMAGECOLOR 255 255 0 16 | 17 | OUTPUTFORMAT 18 | NAME png24_t 19 | DRIVER "AGG/PNG" 20 | IMAGEMODE RGB 21 | TRANSPARENT OFF 22 | END 23 | 24 | IMAGETYPE png24_t 25 | 26 | LAYER 27 | NAME grey 28 | TYPE raster 29 | STATUS default 30 | DATA data/pct22.tif 31 | END 32 | 33 | LAYER 34 | NAME rgb 35 | TYPE raster 36 | STATUS default 37 | DATA data/rgb.tif 38 | OFFSITE 111 222 111 39 | END 40 | 41 | END # of map file 42 | -------------------------------------------------------------------------------- /tests/sample_maps/rgb_overlay_res.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests overlaying an RGB image with a transparent value on a greyscale image 3 | # into an RGB output. 4 | # 5 | # NOTE: with resampling. Also tests the new default PNG24 output format, and 6 | # the change where default formats are still created even if there is 7 | # a user defined format. 8 | # 9 | # REQUIRES: SUPPORTS=PROJ 10 | # 11 | MAP 12 | 13 | NAME TEST 14 | STATUS ON 15 | SIZE 400 300 16 | EXTENT 0.5 0.5 399.5 299.5 17 | IMAGECOLOR 255 255 0 18 | 19 | PROJECTION 20 | "proj=utm" 21 | "zone=12" 22 | "datum=WGS84" 23 | END 24 | 25 | IMAGETYPE png24 26 | 27 | OUTPUTFORMAT 28 | NAME png8_t 29 | DRIVER "GDAL/PNG" 30 | IMAGEMODE RGB 31 | TRANSPARENT OFF 32 | END 33 | 34 | LAYER 35 | NAME grey 36 | TYPE raster 37 | STATUS default 38 | DATA data/pct22.tif 39 | PROJECTION 40 | "proj=utm" 41 | "zone=12" 42 | "ellps=WGS84" 43 | "towgs84=1,0,0" 44 | END 45 | END 46 | 47 | LAYER 48 | NAME rgb 49 | TYPE raster 50 | STATUS default 51 | DATA data/rgb.tif 52 | OFFSITE 111 222 111 53 | PROJECTION 54 | "proj=utm" 55 | "zone=12" 56 | "ellps=WGS84" 57 | "towgs84=1,0,0" 58 | END 59 | END 60 | 61 | END # of map file 62 | -------------------------------------------------------------------------------- /tests/sample_maps/rgb_overlay_res_to8bit.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests overlaying an RGB image with a transparent value on a greyscale image 3 | # into an 8bit output file. This test also verifies that if a user declares 4 | # an outputformat with a name conflicting with an internal default outputformat 5 | # that the users definition will be used ... not the internal one. 6 | # 7 | # NOTE: with resampling. 8 | # 9 | # REQUIRES: SUPPORTS=PROJ 10 | # 11 | MAP 12 | 13 | NAME TEST 14 | STATUS ON 15 | SIZE 400 300 16 | EXTENT 0.5 0.5 399.5 299.5 17 | IMAGECOLOR 255 255 0 18 | 19 | PROJECTION 20 | "proj=utm" 21 | "zone=12" 22 | "datum=WGS84" 23 | END 24 | 25 | IMAGETYPE png8_local 26 | 27 | OUTPUTFORMAT 28 | NAME png8_local 29 | DRIVER "GD/PNG" 30 | IMAGEMODE PC256 31 | TRANSPARENT OFF 32 | END 33 | 34 | LAYER 35 | NAME grey 36 | TYPE raster 37 | STATUS default 38 | DATA data/pct22.tif 39 | PROJECTION 40 | "proj=utm" 41 | "zone=12" 42 | "ellps=WGS84" 43 | "towgs84=1,0,0" 44 | END 45 | END 46 | 47 | LAYER 48 | NAME rgb 49 | TYPE raster 50 | STATUS default 51 | DATA data/rgb.tif 52 | OFFSITE 111 222 111 53 | PROJECTION 54 | "proj=utm" 55 | "zone=12" 56 | "ellps=WGS84" 57 | "towgs84=1,0,0" 58 | END 59 | END 60 | 61 | END # of map file 62 | -------------------------------------------------------------------------------- /tests/sample_maps/rgb_overlay_res_to8bit_dithered.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests overlaying an RGB image with a transparent value on a greyscale image 3 | # into an 8bit output file. 4 | # 5 | # NOTE: with resampling. 6 | # 7 | # REQUIRES: SUPPORTS=PROJ 8 | # 9 | MAP 10 | 11 | NAME TEST 12 | STATUS ON 13 | SIZE 400 300 14 | EXTENT 0.5 0.5 399.5 299.5 15 | IMAGECOLOR 255 255 0 16 | 17 | PROJECTION 18 | "proj=utm" 19 | "zone=12" 20 | "datum=WGS84" 21 | END 22 | 23 | IMAGETYPE png8_t 24 | 25 | OUTPUTFORMAT 26 | NAME png8_t 27 | DRIVER "GD/PNG" 28 | IMAGEMODE PC256 29 | TRANSPARENT OFF 30 | END 31 | 32 | LAYER 33 | NAME grey 34 | TYPE raster 35 | STATUS default 36 | DATA data/pct22.tif 37 | PROJECTION 38 | "proj=utm" 39 | "zone=12" 40 | "ellps=WGS84" 41 | "towgs84=1,0,0" 42 | END 43 | END 44 | 45 | LAYER 46 | NAME rgb 47 | TYPE raster 48 | STATUS default 49 | DATA data/rgb.tif 50 | OFFSITE 111 222 111 51 | PROCESSING "DITHER=ON" 52 | PROJECTION 53 | "proj=utm" 54 | "zone=12" 55 | "ellps=WGS84" 56 | "towgs84=1,0,0" 57 | END 58 | END 59 | 60 | END # of map file 61 | -------------------------------------------------------------------------------- /tests/sample_maps/rgba_overlay_res.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests overlaying an RGBA image with on a greyscale image 3 | # into an RGB output. The RGBA image contains a blending area in the 4 | # top left corner, and a transparent chunk in the middle. 5 | # 6 | # NOTE: with resampling. 7 | # 8 | # REQUIRES: SUPPORTS=PROJ 9 | # 10 | MAP 11 | 12 | NAME TEST 13 | STATUS ON 14 | SIZE 400 300 15 | EXTENT 0.5 0.5 399.5 299.5 16 | IMAGECOLOR 255 255 0 17 | 18 | PROJECTION 19 | "proj=utm" 20 | "zone=12" 21 | "datum=WGS84" 22 | END 23 | 24 | IMAGETYPE png24_t 25 | 26 | OUTPUTFORMAT 27 | NAME png24_t 28 | DRIVER "GDAL/PNG" 29 | IMAGEMODE RGB 30 | TRANSPARENT OFF 31 | END 32 | 33 | LAYER 34 | NAME grey 35 | TYPE raster 36 | STATUS default 37 | DATA data/pct22.tif 38 | PROJECTION 39 | "proj=utm" 40 | "zone=12" 41 | "ellps=WGS84" 42 | "towgs84=1,0,0" 43 | END 44 | END 45 | 46 | LAYER 47 | NAME rgb 48 | TYPE raster 49 | STATUS default 50 | DATA data/rgba.tif 51 | PROJECTION 52 | "proj=utm" 53 | "zone=12" 54 | "ellps=WGS84" 55 | "towgs84=1,0,0" 56 | END 57 | END 58 | 59 | END # of map file 60 | -------------------------------------------------------------------------------- /tests/sample_maps/rot_out.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test support for generating a rotated output map. 3 | # 4 | # REQUIRES: SUPPORTS=PROJ 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 500 500 11 | EXTENT 0.5 0.5 399.5 299.5 12 | IMAGECOLOR 255 255 0 13 | ANGLE 15 14 | 15 | IMAGETYPE png 16 | 17 | PROJECTION 18 | "+proj=utm +zone=11 +datum=WGS84" 19 | END 20 | 21 | SCALEBAR 22 | STATUS EMBED 23 | # POSTLABELCACHE TRUE 24 | SIZE 200 10 25 | UNITS METERS 26 | END 27 | 28 | # 29 | # Start of layer definitions 30 | # 31 | 32 | LAYER 33 | NAME grid1 34 | TYPE raster 35 | STATUS default 36 | DATA data/grid.gif 37 | 38 | PROJECTION 39 | "+proj=utm +zone=11 +datum=WGS84" 40 | END 41 | END 42 | 43 | END # of map file 44 | -------------------------------------------------------------------------------- /tests/sample_maps/simplealpha.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Simple alpha image render on blank background. 4 | # 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 400 300 10 | EXTENT 0.5 0.5 399.5 299.5 11 | IMAGECOLOR 255 255 0 12 | 13 | OUTPUTFORMAT 14 | NAME png24_t 15 | DRIVER "GDAL/PNG" 16 | IMAGEMODE RGBA 17 | END 18 | 19 | LAYER 20 | NAME grey_overlay 21 | TYPE raster 22 | STATUS default 23 | DATA data/greyalpha.vrt 24 | END 25 | 26 | END # of map file 27 | -------------------------------------------------------------------------------- /tests/sample_maps/simplealpha_bg.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Simple alpha image render on blank background. 4 | # 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 400 300 10 | EXTENT 0.5 0.5 399.5 299.5 11 | IMAGECOLOR 255 255 0 12 | 13 | OUTPUTFORMAT 14 | NAME png24_t 15 | DRIVER "GDAL/PNG" 16 | IMAGEMODE RGBA 17 | TRANSPARENT OFF 18 | END 19 | 20 | LAYER 21 | NAME grey_overlay 22 | TYPE raster 23 | STATUS default 24 | DATA data/greyalpha.vrt 25 | END 26 | 27 | END # of map file 28 | -------------------------------------------------------------------------------- /tests/sample_maps/simplealpha_plug.map: -------------------------------------------------------------------------------- 1 | 2 | # 3 | # Simple alpha image render on blank background. 4 | # 5 | # REQUIRES: SUPPORTS=AGG 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 400 300 12 | EXTENT 0.5 0.5 399.5 299.5 13 | IMAGECOLOR 255 255 0 14 | 15 | OUTPUTFORMAT 16 | NAME png24_t 17 | DRIVER "AGG/PNG" 18 | IMAGEMODE RGBA 19 | END 20 | 21 | LAYER 22 | NAME grey_overlay 23 | TYPE raster 24 | STATUS default 25 | DATA data/greyalpha.vrt 26 | END 27 | 28 | END # of map file 29 | -------------------------------------------------------------------------------- /tests/sample_maps/template.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test 1: simple mode=query, HTML template 3 | # RUN_PARMS: template_test001.html [MAPSERV] QUERY_STRING='map=[MAPFILE]&mode=query&qlayer=bdry_counpy2&mapxy=467000+5259000&qformat=html' > [RESULT_DEMIME] 4 | # RUN_PARMS: template_test002.html [MAPSERV] QUERY_STRING='map=[MAPFILE]&mode=query&qlayer=bdry_counpy2&mapxy=467000+5259000&qformat=feature' > [RESULT_DEMIME] 5 | # 6 | MAP 7 | NAME 'query' 8 | EXTENT 125000 4785000 789000 5489000 9 | UNITS METERS 10 | 11 | OUTPUTFORMAT 12 | NAME 'html' 13 | DRIVER 'TEMPLATE' 14 | MIMETYPE 'text/html' 15 | FORMATOPTION "FILE=template/html.tmpl" 16 | END 17 | 18 | OUTPUTFORMAT 19 | NAME 'feature' 20 | DRIVER 'TEMPLATE' 21 | MIMETYPE 'text/html' 22 | FORMATOPTION "FILE=template/feature.tmpl" 23 | END 24 | 25 | LAYER 26 | NAME 'bdry_counpy2' 27 | INCLUDE 'include/bdry_counpy2_shapefile.map' 28 | END 29 | 30 | LAYER 31 | NAME 'indx_q100kpy4' 32 | INCLUDE 'include/indx_q100kpy4_shapefile.map' 33 | END 34 | END 35 | -------------------------------------------------------------------------------- /tests/sample_maps/test.map: -------------------------------------------------------------------------------- 1 | MAP 2 | NAME "sample" 3 | STATUS ON 4 | SIZE 600 400 5 | SYMBOLSET "symbolset" 6 | EXTENT -180 -90 180 90 7 | UNITS DD 8 | SHAPEPATH "data" 9 | IMAGECOLOR 255 255 255 10 | #FONTSET "fonts.lst" 11 | DEBUG 5 12 | 13 | # 14 | # Start of web interface definition 15 | # 16 | WEB 17 | IMAGEPATH "/tmp/ms_tmp/" 18 | IMAGEURL "/ms_tmp/" 19 | END # WEB 20 | 21 | # 22 | # Start of layer definitions 23 | # 24 | LAYER 25 | NAME 'global-raster' 26 | TYPE RASTER 27 | STATUS DEFAULT 28 | DATA gdalicon.gif 29 | END # LAYER 30 | END # MAP 31 | -------------------------------------------------------------------------------- /tests/sample_maps/test_mapio.map: -------------------------------------------------------------------------------- 1 | # REQUIRES: INPUT=GDAL OUTPUT=PNG SUPPORTS=WMS 2 | # 3 | MAP 4 | NAME TEST 5 | STATUS ON 6 | SIZE 80 40 7 | EXTENT -180 -90 180 90 8 | 9 | PROJECTION 10 | "init=epsg:4326" 11 | END 12 | 13 | OUTPUTFORMAT 14 | NAME png24_t 15 | DRIVER "GDAL/PNG" 16 | IMAGEMODE RGBA 17 | END 18 | 19 | WEB 20 | METADATA 21 | "ows_enable_request" "*" 22 | "wms_srs" "EPSG:4326" 23 | "ows_http_max_age" "86400" 24 | END 25 | END 26 | 27 | LAYER 28 | NAME grey 29 | TYPE raster 30 | STATUS default 31 | DATA ../gdal/data/grey.tif 32 | END 33 | 34 | 35 | END # of map file 36 | -------------------------------------------------------------------------------- /tests/sample_maps/test_xmp.map: -------------------------------------------------------------------------------- 1 | # REQUIRES: INPUT=GDAL OUTPUT=PNG SUPPORTS=XMP 2 | # 3 | MAP 4 | NAME TEST 5 | STATUS ON 6 | SIZE 40 30 7 | EXTENT 0.5 0.5 399.5 299.5 8 | 9 | OUTPUTFORMAT 10 | NAME png24_t 11 | DRIVER "GDAL/PNG" 12 | IMAGEMODE RGBA 13 | END 14 | 15 | WEB 16 | METADATA 17 | "xmp_dc_Title" "Super Map" 18 | "xmp_rights_Marked" "true" 19 | "xmp_cc_License" "http://creativecommons.org/licenses/by-sa/2.0/" 20 | "xmp_lightroom_namespace" "http://ns.adobe.com/lightroom/1.0/" 21 | "xmp_lightroom_PrivateRTKInfo" "My Information Here" 22 | "xmp_meta_Author" "John Doe" 23 | "xmp_exif_ExifVersion" "dummy" 24 | "xmp_tiff_Software" "MapServer" 25 | "xmp_crs_Converter" "MapServer" 26 | "xmp_photoshop_Source" "MapServer" 27 | END 28 | END 29 | 30 | LAYER 31 | NAME grey 32 | TYPE raster 33 | STATUS default 34 | DATA ../gdal/data/grey.tif 35 | END 36 | 37 | 38 | END # of map file 39 | -------------------------------------------------------------------------------- /tests/sample_maps/testuppercase.map: -------------------------------------------------------------------------------- 1 | # 2 | # REQUIRES: INPUT=SHAPE OUTPUT=PNG SUPPORTS=PROJ 3 | # 4 | MAP 5 | NAME 'UPPERCASE' 6 | IMAGETYPE PNG 7 | EXTENT -90 -15 -88 -13 8 | SIZE 20 20 9 | 10 | PROJECTION 11 | "+proj=latlong +datum=WGS84" 12 | END 13 | 14 | LAYER 15 | NAME "world" 16 | TYPE POLYGON 17 | STATUS DEFAULT 18 | DATA "data/WORLD_TESTPOLY_UPPERCASE.SHP" 19 | END 20 | END 21 | -------------------------------------------------------------------------------- /tests/sample_maps/text-shaping.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: text_shaping_1.png [MAP2IMG] -e -7788846 2090453 -7782864 2095850 -l l1 -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: text_shaping_1.cairo.png [MAP2IMG] -e -7788846 2090453 -7782864 2095850 -l l1 -m [MAPFILE] -i cairopng -o [RESULT] 3 | # RUN_PARMS: text_shaping_1.pdf [MAP2IMG] -e -7788846 2090453 -7782864 2095850 -l l1 -m [MAPFILE] -i pdf -o [RESULT] 4 | # RUN_PARMS: text_shaping_1.svg [MAP2IMG] -e -7788846 2090453 -7782864 2095850 -l l1 -m [MAPFILE] -i svg -o [RESULT] 5 | map 6 | 7 | imagetype png 8 | size 150 100 9 | extent -636429 4058522 -635180 4059871 10 | shapepath "data" 11 | fontset "../misc/fonts.lst" 12 | 13 | layer 14 | type point 15 | status off 16 | name "l1" 17 | data "cities.shp" 18 | class 19 | label 20 | text "[name_hi] [name]" 21 | font "hi:hindi,default" 22 | type truetype 23 | size 12 24 | color 0 0 0 25 | wrap " " 26 | align center 27 | maxlength 10 28 | buffer 4 29 | partials false 30 | end 31 | end 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /tests/sample_maps/ticket_5032_optim_1.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test optimization where we request exactly at the raster resolution and 3 | # on pixel boundaries (#5032) 4 | # 5 | # REQUIRES: SUPPORTS=PROJ 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 400 300 12 | EXTENT 0.5 0.5 399.5 299.5 13 | IMAGECOLOR 255 255 0 14 | 15 | PROJECTION 16 | "+proj=utm +zone=30 +datum=WGS84 +units=m +no_defs" 17 | END 18 | 19 | IMAGETYPE png24 20 | 21 | # 22 | # Start of layer definitions 23 | # 24 | 25 | LAYER 26 | 27 | # Slightly different formulations, but identical to the MAP projection 28 | PROJECTION 29 | "+proj=utm +datum=WGS84 +zone=30 +units=m" 30 | END 31 | 32 | NAME grid1 33 | TYPE raster 34 | STATUS default 35 | PROCESSING "RESAMPLE=AVERAGE" # will be ignored 36 | DATA data/rgb.tif 37 | END 38 | 39 | END # of map file 40 | -------------------------------------------------------------------------------- /tests/sample_maps/ticket_5032_optim_2.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test optimization where we request exactly at an integral factor of the 3 | # raster resolution and pixel boundaries (#5032) 4 | # 5 | # REQUIRES: SUPPORTS=PROJ 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 200 150 12 | EXTENT 1.0 1.0 399.0 299.0 13 | IMAGECOLOR 255 255 0 14 | 15 | IMAGETYPE png24 16 | 17 | # 18 | # Start of layer definitions 19 | # 20 | 21 | LAYER 22 | NAME grid1 23 | TYPE raster 24 | STATUS default 25 | PROCESSING "RESAMPLE=AVERAGE" 26 | DATA data/rgb.tif 27 | END 28 | 29 | END # of map file 30 | -------------------------------------------------------------------------------- /tests/sample_maps/tileindex.map: -------------------------------------------------------------------------------- 1 | # 2 | # REQUIRES: SUPPORTS=PROJ 3 | # 4 | # This map is also used by ../mspython/rqtest.py 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 400 300 11 | EXTENT 0.5 0.5 79.5 59.5 12 | IMAGECOLOR 255 255 0 13 | 14 | PROJECTION 15 | "+proj=latlong +datum=WGS84" 16 | END 17 | 18 | IMAGETYPE png8_t 19 | 20 | OUTPUTFORMAT 21 | NAME png8_t 22 | DRIVER "GD/PNG" 23 | EXTENSION "png" 24 | MIMETYPE "image/png" 25 | IMAGEMODE PC256 26 | TRANSPARENT OFF 27 | END 28 | 29 | LAYER 30 | NAME grey 31 | TYPE raster 32 | STATUS default 33 | TEMPLATE "fake.html" 34 | TILEINDEX "data/tile_index.shp" 35 | TILEITEM "location" 36 | PROJECTION 37 | "+proj=latlong +datum=WGS84" 38 | END 39 | END 40 | 41 | END # of map file 42 | -------------------------------------------------------------------------------- /tests/sample_maps/tileindex_mi.map: -------------------------------------------------------------------------------- 1 | # 2 | # REQUIRES: SUPPORTS=PROJ 3 | # 4 | # This map is also used by ../mspython/rqtest.py 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 400 300 11 | EXTENT 0.5 0.5 79.5 59.5 12 | IMAGECOLOR 255 255 0 13 | SHAPEPATH "data" 14 | 15 | PROJECTION 16 | "+proj=latlong +datum=WGS84" 17 | END 18 | 19 | IMAGETYPE png8_t 20 | 21 | OUTPUTFORMAT 22 | NAME png8_t 23 | DRIVER "GD/PNG" 24 | EXTENSION "png" 25 | MIMETYPE "image/png" 26 | IMAGEMODE PC256 27 | TRANSPARENT OFF 28 | END 29 | 30 | LAYER 31 | NAME grey 32 | TYPE raster 33 | STATUS default 34 | TEMPLATE "fake.html" 35 | TILEINDEX tindex 36 | TILEITEM "location" 37 | PROJECTION 38 | "+proj=latlong +datum=WGS84" 39 | END 40 | END 41 | 42 | LAYER 43 | NAME tindex 44 | TYPE polygon 45 | DATA "tile_index.mif" 46 | END 47 | 48 | END # of map file 49 | -------------------------------------------------------------------------------- /tests/sample_maps/tileindexmixedsrs2.map: -------------------------------------------------------------------------------- 1 | # 2 | # REQUIRES: SUPPORTS=PROJ 3 | # 4 | # Same as tileindexmixedsrs.map but with PROJECTION AUTO 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 100 100 10 | EXTENT 440720.000 3745320.000 446720.000 3751320.000 11 | IMAGECOLOR 0 0 0 12 | 13 | PROJECTION 14 | "+init=epsg:26711" 15 | END 16 | 17 | IMAGETYPE PNG8 18 | 19 | LAYER 20 | NAME grey 21 | TYPE raster 22 | STATUS default 23 | TEMPLATE "fake.html" 24 | TILEINDEX "data/tile_index_mixed_srs.shp" 25 | TILEITEM "location" 26 | TILESRS "src_srs" 27 | PROJECTION 28 | AUTO 29 | END 30 | END 31 | 32 | END # of map file 33 | -------------------------------------------------------------------------------- /tests/sample_maps/tileindexmixedsrs3.map: -------------------------------------------------------------------------------- 1 | # 2 | # REQUIRES: SUPPORTS=PROJ 3 | # 4 | # Same as tileindexmixedsrs.map but with tileindex as a layer 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 100 100 10 | EXTENT 440720.000 3745320.000 446720.000 3751320.000 11 | IMAGECOLOR 0 0 0 12 | 13 | PROJECTION 14 | "+init=epsg:26711" 15 | END 16 | 17 | IMAGETYPE PNG8 18 | 19 | LAYER 20 | NAME mytileindex 21 | TYPE POLYGON 22 | STATUS OFF 23 | DATA "data/tile_index_mixed_srs_with_data_dir.shp" 24 | PROJECTION 25 | AUTO 26 | END 27 | END 28 | 29 | LAYER 30 | NAME grey 31 | TYPE raster 32 | STATUS default 33 | TEMPLATE "fake.html" 34 | TILEINDEX "mytileindex" 35 | TILEITEM "location" 36 | TILESRS "src_srs" 37 | PROJECTION 38 | AUTO 39 | END 40 | END 41 | 42 | END # of map file 43 | -------------------------------------------------------------------------------- /tests/sample_maps/tileindexmixedsrs4.map: -------------------------------------------------------------------------------- 1 | # 2 | # REQUIRES: SUPPORTS=PROJ 3 | # 4 | # Same as tileindexmixedsrs.map but with tileindex as a OGR layer 5 | MAP 6 | 7 | NAME TEST 8 | STATUS ON 9 | SIZE 100 100 10 | EXTENT 440720.000 3745320.000 446720.000 3751320.000 11 | IMAGECOLOR 0 0 0 12 | 13 | PROJECTION 14 | "+init=epsg:26711" 15 | END 16 | 17 | IMAGETYPE PNG8 18 | 19 | LAYER 20 | NAME mytileindex 21 | TYPE POLYGON 22 | STATUS OFF 23 | CONNECTION "data/tile_index_mixed_srs_with_data_dir.shp" 24 | CONNECTIONTYPE OGR 25 | PROJECTION 26 | AUTO 27 | END 28 | END 29 | 30 | LAYER 31 | NAME grey 32 | TYPE raster 33 | STATUS default 34 | TEMPLATE "fake.html" 35 | TILEINDEX "mytileindex" 36 | TILEITEM "location" 37 | TILESRS "src_srs" 38 | PROJECTION 39 | AUTO 40 | END 41 | END 42 | 43 | END # of map file 44 | -------------------------------------------------------------------------------- /tests/sample_maps/transparent_layer.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: transparent_layer.png [MAP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: transparent_layer.pdf [MAP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: transparent_layer.svg [MAP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: transparent_layer.cairo.png [MAP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | # 7 | # entity-encoded text rendering test. 8 | # this test may potentially segfault 9 | # 10 | # REQUIRES: OUTPUT=PNG 11 | # 12 | MAP 13 | 14 | STATUS ON 15 | EXTENT -125.549477 -69.508628 101.670954 15.840339 16 | SIZE 200 150 17 | FONTSET "../misc/fonts.lst" 18 | IMAGETYPE png24 19 | symbolset "symbolset" 20 | shapepath "../misc/data" 21 | 22 | CONFIG MS_ERRORFILE "stderr" 23 | 24 | 25 | 26 | SYMBOL 27 | name "hatch" 28 | type hatch 29 | end 30 | 31 | LAYER 32 | NAME "world" 33 | TYPE polygon 34 | STATUS on 35 | DATA "world_testpoly" 36 | CLASS 37 | NAME "test1" 38 | STYLE 39 | COLOR 180 0 0 40 | END 41 | END 42 | END 43 | 44 | LAYER 45 | NAME "world2" 46 | TYPE polygon 47 | STATUS on 48 | DATA "world_testpoly" 49 | COMPOSITE 50 | OPACITY 50 51 | END 52 | CLASS 53 | NAME "test1" 54 | STYLE 55 | COLOR 0 0 0 56 | symbol "hatch" 57 | SIZE 20 58 | WIDTH 14 59 | ANGLE 45 60 | END 61 | END 62 | END 63 | 64 | END 65 | -------------------------------------------------------------------------------- /tests/sample_maps/trlay1.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test TRANSPARENCY flag on layer for overlaying 24bit image(s). 3 | # 4 | # In this case the final output image is RGB but the temporary results include 5 | # alpha values. 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 400 300 12 | EXTENT 0.5 0.5 399.5 299.5 13 | IMAGECOLOR 255 255 0 14 | 15 | IMAGETYPE png_24 16 | 17 | OUTPUTFORMAT 18 | NAME png_24 19 | DRIVER "GD/PNG" 20 | IMAGEMODE RGB 21 | TRANSPARENT OFF 22 | END 23 | 24 | # 25 | # Start of layer definitions 26 | # 27 | 28 | LAYER 29 | NAME backdrop 30 | TYPE raster 31 | STATUS default 32 | DATA data/rgba.tif 33 | END 34 | LAYER 35 | NAME grid1 36 | TYPE raster 37 | STATUS ON 38 | DATA data/grid.gif 39 | COMPOSITE 40 | OPACITY 33 41 | END 42 | END 43 | 44 | END # of map file 45 | -------------------------------------------------------------------------------- /tests/sample_maps/trlay2.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test TRANSPARENCY flag on layer for overlaying 24bit image(s). 3 | # 4 | # Final result is RGBA and transparency from both input images, and the 5 | # layer TRANSPARENCY flag all have an influence. 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 400 300 12 | EXTENT 0.5 0.5 399.5 299.5 13 | IMAGECOLOR 255 255 0 14 | 15 | IMAGETYPE png_24 16 | 17 | OUTPUTFORMAT 18 | NAME png_24 19 | DRIVER "GD/PNG" 20 | IMAGEMODE RGBA 21 | TRANSPARENT ON 22 | END 23 | 24 | # 25 | # Start of layer definitions 26 | # 27 | 28 | LAYER 29 | NAME backdrop 30 | TYPE raster 31 | STATUS default 32 | DATA data/rgba.tif 33 | END 34 | LAYER 35 | NAME grid1 36 | TYPE raster 37 | STATUS ON 38 | DATA data/grid.gif 39 | COMPOSITE 40 | OPACITY 33 41 | END 42 | END 43 | 44 | END # of map file 45 | -------------------------------------------------------------------------------- /tests/sample_maps/trlay3.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test TRANSPARENCY flag with 8bit output result. 3 | # 4 | MAP 5 | 6 | NAME TEST 7 | STATUS ON 8 | SIZE 400 300 9 | EXTENT 0.5 0.5 399.5 299.5 10 | IMAGECOLOR 255 255 0 11 | 12 | IMAGETYPE png_8 13 | 14 | OUTPUTFORMAT 15 | NAME png_8 16 | DRIVER "GD/PNG" 17 | IMAGEMODE PC256 18 | TRANSPARENT ON 19 | END 20 | 21 | # 22 | # Start of layer definitions 23 | # 24 | 25 | LAYER 26 | NAME backdrop 27 | TYPE raster 28 | STATUS default 29 | DATA data/rgba.tif 30 | END 31 | LAYER 32 | NAME grid1 33 | TYPE raster 34 | STATUS ON 35 | DATA data/grid.gif 36 | COMPOSITE 37 | OPACITY 33 38 | END 39 | END 40 | 41 | END # of map file 42 | -------------------------------------------------------------------------------- /tests/sample_maps/unclassified.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test use of 24bit images with a dummy class used to populate the legend. 3 | # The image should come through as 24bit since there is no expression in the 4 | # class. 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 400 300 11 | EXTENT 0.5 0.5 399.5 299.5 12 | IMAGECOLOR 255 255 0 13 | 14 | IMAGETYPE png24_t 15 | 16 | OUTPUTFORMAT 17 | NAME png24_t 18 | DRIVER "GDAL/PNG" 19 | IMAGEMODE RGBA 20 | TRANSPARENT ON 21 | END 22 | 23 | LAYER 24 | NAME rgb 25 | TYPE raster 26 | STATUS default 27 | DATA data/rgba.tif 28 | PROCESSING "BANDS=1,2,3" 29 | PROCESSING "USE_MASK_BAND=NO" 30 | CLASS 31 | KEYIMAGE "data/grid.gif" 32 | END 33 | END 34 | 35 | END # of map file 36 | -------------------------------------------------------------------------------- /tests/sample_maps/union.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test UNION LAYER 3 | # 4 | # REQUIRES: OUTPUT=PNG 5 | # 6 | MAP 7 | 8 | STATUS ON 9 | EXTENT 478300 4762880 481650 4765610 10 | SIZE 400 300 11 | 12 | IMAGETYPE png 13 | SHAPEPATH ./data/union 14 | 15 | LAYER 16 | STATUS default 17 | NAME 'shppoly' 18 | TYPE POLYGON 19 | CONNECTIONTYPE UNION 20 | CONNECTION "layer1,layer2" # reference to the source layers 21 | STYLEITEM "AUTO" 22 | # Define an empty class that will be filled at runtime from the color and 23 | # styles read from each source layer. 24 | CLASS 25 | END 26 | END 27 | 28 | 29 | LAYER 30 | STATUS OFF 31 | NAME 'layer1' 32 | TYPE POLYGON 33 | DATA 'layer1' 34 | CLASSITEM "AREA" 35 | CLASS 36 | NAME "green" 37 | STYLE 38 | COLOR 0 255 0 39 | OUTLINECOLOR 255 0 0 40 | END 41 | END 42 | END 43 | 44 | 45 | LAYER 46 | STATUS OFF 47 | NAME 'layer2' 48 | TYPE POLYGON 49 | DATA 'layer2' 50 | CLASSITEM "AREA" 51 | CLASS 52 | NAME "red" 53 | STYLE 54 | COLOR 255 0 0 55 | OUTLINECOLOR 255 0 0 56 | END 57 | END 58 | END 59 | 60 | 61 | END 62 | -------------------------------------------------------------------------------- /tests/sample_maps/utfgrid-escaping.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: utfgrid-escaping.json [MAP2IMG] -m [MAPFILE] -i json -o [RESULT] 2 | # 3 | # Test JSon escaping of item and data values. 4 | # 5 | MAP 6 | 7 | STATUS ON 8 | EXTENT 1 47 3 50 9 | SIZE 200 200 10 | FONTSET "../misc/fonts.lst" 11 | IMAGETYPE png24 12 | symbolset "symbolset" 13 | 14 | CONFIG MS_ERRORFILE "stderr" 15 | 16 | LAYER 17 | NAME "testutfgrid" 18 | TYPE POINT 19 | STATUS default 20 | CONNECTIONTYPE OGR 21 | CONNECTION "data/testutfgrid.csv" 22 | 23 | UTFITEM "id" 24 | UTFDATA "{\"text\":\"[text]\"}" 25 | 26 | CLASS 27 | STYLE 28 | COLOR 255 0 0 29 | SIZE 8 30 | WIDTH 1 31 | SYMBOL "circle" 32 | END 33 | END 34 | END 35 | 36 | END 37 | -------------------------------------------------------------------------------- /tests/sample_maps/wfs_ogr_drv_nocreatedatasource.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test WFS 3 | # 4 | # REQUIRES: SUPPORTS=WFS INPUT=OGR 5 | # 6 | # WFS 1.0 7 | # 8 | # Do formats show up in the Capabilities 9 | # RUN_PARMS: wfs_ogr_drv_nocreatedatasource_caps.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetCapabilities" > [RESULT_DEVERSION] 10 | 11 | MAP 12 | 13 | OUTPUTFORMAT 14 | NAME "nocreatedatasource" 15 | DRIVER "OGR/SDTS" 16 | MIMETYPE "text/nocreatedatasource" 17 | END 18 | 19 | END # Map File 20 | -------------------------------------------------------------------------------- /tests/sample_maps/wfs_ogr_export_metadata.map: -------------------------------------------------------------------------------- 1 | METADATA 2 | "gml_include_items" "all" 3 | "gml_types" "auto" 4 | "ows_geomtype" "Geometry" 5 | "wfs_use_default_extent_for_getfeature" "false" 6 | END -------------------------------------------------------------------------------- /tests/sample_maps/wfs_ogr_nonexistingdrv.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test WFS 3 | # 4 | # REQUIRES: SUPPORTS=WFS INPUT=OGR 5 | # 6 | # WFS 1.0 7 | # 8 | # Do formats show up in the Capabilities 9 | # RUN_PARMS: wfs_ogr_nonexistingdrv_caps.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetCapabilities" > [RESULT_DEVERSION] 10 | 11 | MAP 12 | 13 | OUTPUTFORMAT 14 | NAME "nonexistingdrv" 15 | DRIVER "OGR/nonexistingdrv" 16 | MIMETYPE "text/nonexistingdrv" 17 | END 18 | 19 | END # Map File 20 | -------------------------------------------------------------------------------- /tests/sample_maps/wfs_test5299.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test fix for #5299 3 | # 4 | # REQUIRES: SUPPORTS=WFS INPUT=OGR 5 | # 6 | # Generate dump to gml2 7 | # RUN_PARMS: wfs_test5299.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=test5299" > [RESULT] 8 | 9 | MAP 10 | NAME test 11 | EXTENT 0 0 10 10 12 | SIZE 200 200 13 | 14 | PROJECTION 15 | "init=epsg:4326" 16 | END 17 | 18 | WEB 19 | METADATA 20 | OWS_ONLINERESOURCE "http://127.0.0.0.1" 21 | OWS_SRS "EPSG:4326" 22 | OWS_ENABLE_REQUEST "*" 23 | END 24 | END 25 | 26 | LAYER 27 | NAME test5299 28 | TYPE POLYGON 29 | STATUS ON 30 | CONNECTIONTYPE OGR 31 | CONNECTION "data/test5299.csv" 32 | 33 | METADATA 34 | "ows_geomtype" "MultiPolygon" 35 | END 36 | 37 | STYLEITEM "AUTO" 38 | CLASS 39 | END 40 | END 41 | END 42 | -------------------------------------------------------------------------------- /tests/sample_maps/wld_override.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests support for images with non-northup world files. 3 | # 4 | # REQUIRES: SUPPORTS=PROJ 5 | # 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 200 200 12 | EXTENT 1 1 459 459 13 | IMAGECOLOR 255 255 0 14 | 15 | PROJECTION 16 | "proj=utm" 17 | "zone=12" 18 | "datum=WGS84" 19 | END 20 | 21 | IMAGETYPE png8_t 22 | 23 | OUTPUTFORMAT 24 | NAME png8_t 25 | DRIVER "GD/PNG" 26 | IMAGEMODE PC256 27 | TRANSPARENT OFF 28 | END 29 | 30 | LAYER 31 | NAME grey 32 | TYPE raster 33 | STATUS default 34 | DATA data/grey_rot.tif 35 | PROCESSING "EXTENT_PRIORITY=WORLD" 36 | PROCESSING "WORLDFILE=data/grey.wld" 37 | PROJECTION 38 | "proj=utm" 39 | "zone=12" 40 | "ellps=WGS84" 41 | END 42 | END 43 | END # of map file 44 | 45 | -------------------------------------------------------------------------------- /tests/sample_maps/wld_rotate.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests support for images with non-northup world files. 3 | # 4 | # REQUIRES: SUPPORTS=PROJ 5 | # 6 | # 7 | MAP 8 | 9 | NAME TEST 10 | STATUS ON 11 | SIZE 200 200 12 | EXTENT 1 1 459 459 13 | IMAGECOLOR 255 255 0 14 | 15 | PROJECTION 16 | "proj=utm" 17 | "zone=12" 18 | "datum=WGS84" 19 | END 20 | 21 | IMAGETYPE png8_t 22 | 23 | OUTPUTFORMAT 24 | NAME png8_t 25 | DRIVER "GD/PNG" 26 | IMAGEMODE PC256 27 | TRANSPARENT OFF 28 | END 29 | 30 | LAYER 31 | NAME grey 32 | TYPE raster 33 | STATUS default 34 | DATA data/grey_rot.tif 35 | PROJECTION 36 | "proj=utm" 37 | "zone=12" 38 | "ellps=WGS84" 39 | END 40 | END 41 | END # of map file 42 | 43 | -------------------------------------------------------------------------------- /tests/sample_maps/wld_upsidedown.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests support for upside-down images (like bug 1904). 3 | # 4 | # REQUIRES: SUPPORTS=PROJ 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 200 150 11 | EXTENT 1 1 399 299 12 | IMAGECOLOR 255 255 0 13 | 14 | IMAGETYPE png8_t 15 | 16 | OUTPUTFORMAT 17 | NAME png8_t 18 | DRIVER "GD/PNG" 19 | IMAGEMODE PC256 20 | TRANSPARENT OFF 21 | END 22 | 23 | LAYER 24 | NAME grey 25 | TYPE raster 26 | STATUS default 27 | DATA data/grey_upsidedown.tif 28 | END 29 | END # of map file 30 | 31 | -------------------------------------------------------------------------------- /tests/sample_maps/wms_polar_stereo.map: -------------------------------------------------------------------------------- 1 | # 2 | # Tests support for images in polar stereographic projection 3 | # 4 | # REQUIRES: SUPPORTS=WMS 5 | # 6 | # 7 | # GetMap 8 | # RUN_PARMS: wms_polar_stereo.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=test&STYLES=&CRS=EPSG:4326&BBOX=-89,-180,90,180&WIDTH=200&HEIGHT=200&FORMAT=image/png" > [RESULT_DEMIME] 9 | 10 | MAP 11 | 12 | NAME TEST 13 | STATUS ON 14 | SIZE 200 200 15 | EXTENT -180 -89 180 90 16 | IMAGECOLOR 0 0 0 17 | 18 | PROJECTION 19 | "init=epsg:4326" 20 | END 21 | 22 | IMAGETYPE png8_t 23 | 24 | OUTPUTFORMAT 25 | NAME png8_t 26 | DRIVER "GD/PNG" 27 | IMAGEMODE PC256 28 | TRANSPARENT OFF 29 | END 30 | 31 | WEB 32 | METADATA 33 | "ows_enable_request" "*" 34 | "wms_srs" "EPSG:4326" 35 | END 36 | END 37 | 38 | LAYER 39 | NAME test 40 | TYPE raster 41 | STATUS default 42 | DATA data/polar_stereo.tif 43 | PROJECTION 44 | AUTO 45 | END 46 | END 47 | END # of map file 48 | 49 | -------------------------------------------------------------------------------- /tests/sample_maps/wmsclient.map: -------------------------------------------------------------------------------- 1 | # 2 | # Simple test of WMS client support. 3 | # 4 | # REQUIRES: SUPPORTS=WMS_CLIENT 5 | # 6 | MAP 7 | 8 | NAME TEST 9 | STATUS ON 10 | SIZE 360 145 11 | EXTENT -180 -60 180 85 12 | IMAGECOLOR 255 255 0 13 | 14 | OUTPUTFORMAT 15 | NAME png8_t 16 | DRIVER "GDAL/PNG" 17 | IMAGEMODE PC256 18 | END 19 | 20 | WEB 21 | IMAGEPATH "./tmp/" 22 | END 23 | 24 | LAYER 25 | NAME "pop" 26 | TYPE RASTER 27 | STATUS DEFAULT 28 | DEBUG 1 29 | #CONNECTION "http://mstest.tiles.osgeo.org/wms/vmap0?" 30 | CONNECTION "https://demo.mapserver.org/cgi-bin/msautotest?" 31 | CONNECTIONTYPE WMS 32 | METADATA 33 | "wms_srs" "EPSG:4326" 34 | "wms_name" "world_merc" 35 | "wms_server_version" "1.1.1" 36 | "wms_format" "image/png" 37 | END 38 | END 39 | 40 | END # of map file 41 | 42 | -------------------------------------------------------------------------------- /tests/sample_maps/wmsclient_3543.map: -------------------------------------------------------------------------------- 1 | # 2 | # Test #3543 related improvements to use layer extents. 3 | # 4 | # REQUIRES: SUPPORTS=WMS_CLIENT 5 | # 6 | 7 | MAP 8 | EXTENT -179.9 -90 179.9 90 9 | SIZE 180 90 10 | IMAGECOLOR 255 255 255 11 | STATUS ON 12 | UNITS DD 13 | IMAGETYPE PNG24 14 | 15 | PROJECTION 16 | "proj=longlat" "ellps=WGS84" "datum=WGS84" "no_defs" 17 | END 18 | 19 | WEB 20 | IMAGEPATH "./tmp/" 21 | END 22 | 23 | LAYER 24 | NAME "X" 25 | CONNECTION "https://demo.mapserver.org/cgi-bin/msautotest?" 26 | CONNECTIONTYPE WMS 27 | TYPE RASTER 28 | STATUS DEFAULT 29 | METADATA 30 | "wms_srs" "EPSG:3857" 31 | "wms_server_version" "1.1.1" 32 | "wms_format" "image/jpeg" 33 | "wms_name" "world_merc" 34 | # "wms_nonsquare_ok" "false" 35 | "wms_extent" "-20000000 -15000000 20000000 15000000" 36 | END 37 | END 38 | 39 | END 40 | -------------------------------------------------------------------------------- /tests/sample_maps/wmsclient_proj.map: -------------------------------------------------------------------------------- 1 | #RUN_PARMS: wmsclient_proj.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&LAYERS=pop&BBOX=-20026376,-20048966,-200,-200&WIDTH=200&HEIGHT=200&VERSION=1.1.1&FORMAT=image%2Fpng&SERVICE=WMS&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A3857" > [RESULT_DEMIME] 2 | 3 | # 4 | # Test requeseting a WMS layer in another projection than defined on the layers PROJECTION directive. 5 | # 6 | 7 | MAP 8 | NAME TEST 9 | STATUS ON 10 | SIZE 360 145 11 | EXTENT -180 -60 180 85 12 | IMAGECOLOR 255 255 0 13 | 14 | IMAGETYPE png 15 | PROJECTION 16 | "init=epsg:4326" 17 | END # PROJECTION 18 | 19 | LAYER 20 | NAME "pop" 21 | TYPE RASTER 22 | STATUS DEFAULT 23 | CONNECTION "https://demo.mapserver.org/cgi-bin/msautotest?" 24 | CONNECTIONTYPE WMS 25 | EXTENT -180 -60 180 85 26 | METADATA 27 | "wms_srs" "EPSG:4326 EPSG:3857" 28 | "wms_name" "world_merc" 29 | "wms_server_version" "1.1.1" 30 | "wms_format" "image/png" 31 | "wms_enable_request" "*" 32 | END 33 | 34 | PROJECTION 35 | "init=epsg:4326" 36 | END # PROJECTION 37 | 38 | END 39 | 40 | END # of map file 41 | 42 | -------------------------------------------------------------------------------- /tests/samples/connection.map: -------------------------------------------------------------------------------- 1 | # sample reusable global connection settings 2 | CONNECTIONTYPE PLUGIN 3 | PROCESSING "CLOSE_CONNECTION=DEFER" -------------------------------------------------------------------------------- /tests/samples/include1.map: -------------------------------------------------------------------------------- 1 | MAP 2 | NAME 'include_test' 3 | INCLUDE 'include2.map' INCLUDE 'ignored.map' # with comment 4 | END -------------------------------------------------------------------------------- /tests/samples/include1_nested_path.map: -------------------------------------------------------------------------------- 1 | MAP 2 | NAME 'include_test' 3 | INCLUDE 'mapfile_include/include2_nested_path.map' 4 | END 5 | -------------------------------------------------------------------------------- /tests/samples/include1_recursive.map: -------------------------------------------------------------------------------- 1 | MAP 2 | NAME 'include_test' 3 | INCLUDE 'include2_recursive.map' 4 | END 5 | -------------------------------------------------------------------------------- /tests/samples/include2.map: -------------------------------------------------------------------------------- 1 | LAYER 2 | INCLUDE 'include3.map' 3 | END -------------------------------------------------------------------------------- /tests/samples/include2_recursive.map: -------------------------------------------------------------------------------- 1 | LAYER 2 | INCLUDE 'include3_recursive.map' 3 | END 4 | -------------------------------------------------------------------------------- /tests/samples/include3.map: -------------------------------------------------------------------------------- 1 | NAME 'test' -------------------------------------------------------------------------------- /tests/samples/include3_recursive.map: -------------------------------------------------------------------------------- 1 | CLASS 2 | NAME 'test_class' 3 | INCLUDE 'include4_recursive.map' 4 | END 5 | -------------------------------------------------------------------------------- /tests/samples/include4.map: -------------------------------------------------------------------------------- 1 | MAP 2 | NAME 'include_test' 3 | INCLUDE 'layers/layer1.map' 4 | END -------------------------------------------------------------------------------- /tests/samples/include4_recursive.map: -------------------------------------------------------------------------------- 1 | STYLE 2 | INCLUDE 'include5_recursive.map' 3 | END 4 | -------------------------------------------------------------------------------- /tests/samples/include5_recursive.map: -------------------------------------------------------------------------------- 1 | COLOR 0 0 0 2 | INCLUDE 'include6_recursive.map' 3 | -------------------------------------------------------------------------------- /tests/samples/include6_recursive.map: -------------------------------------------------------------------------------- 1 | SIZE 8 2 | INCLUDE 'include7_recursive.map' 3 | -------------------------------------------------------------------------------- /tests/samples/include7_recursive.map: -------------------------------------------------------------------------------- 1 | OUTLINECOLOR 255 255 255 2 | -------------------------------------------------------------------------------- /tests/samples/layers/layer1.map: -------------------------------------------------------------------------------- 1 | LAYER 2 | NAME 'layer1' 3 | # following include should be relative to the parent MAP file, not layer file 4 | INCLUDE 'connection.map' 5 | END -------------------------------------------------------------------------------- /tests/samples/mapfile_include/include/include3_nested_path.map: -------------------------------------------------------------------------------- 1 | NAME 'test' 2 | -------------------------------------------------------------------------------- /tests/samples/mapfile_include/include2_nested_path.map: -------------------------------------------------------------------------------- 1 | LAYER 2 | NAME 'include_test' 3 | INCLUDE 'mapfile_include/include/include3_nested_path.map' 4 | END 5 | -------------------------------------------------------------------------------- /tests/samples/new_c_comments.map: -------------------------------------------------------------------------------- 1 | # RUN_PARMS: empty.png [SHP2IMG] -m [MAPFILE] -i png -o [RESULT] 2 | # RUN_PARMS: empty.pdf [SHP2IMG] -m [MAPFILE] -i pdf -o [RESULT] 3 | # RUN_PARMS: empty.svg [SHP2IMG] -m [MAPFILE] -i svg -o [RESULT] 4 | # RUN_PARMS: empty.cairo.png [SHP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] 5 | # 6 | map 7 | 8 | /* 9 | Multi-line comments as implemented in https://github.com/mapserver/mapserver/issues/4097 10 | Original ticket in trac at http://trac.osgeo.org/mapserver/ticket/4097 11 | */ 12 | imagetype png 13 | size 10 10 14 | extent 0 0 400 300 15 | shapepath "../misc/data" 16 | fontset "../misc/fonts.lst" 17 | symbolset "symbolset" 18 | 19 | /* Single line comments are also supported */ 20 | 21 | layer 22 | type point 23 | end 24 | 25 | end 26 | -------------------------------------------------------------------------------- /tests/samples/unicode.map: -------------------------------------------------------------------------------- 1 | CLASS 2 | 3 | NAME 'Enw’r stryd ddynodedig' 4 | 5 | EXPRESSION /^Designated street.*$/ 6 | 7 | STYLE 8 | 9 | #SYMBOL 'line' 10 | 11 | COLOR 255 0 0#red 12 | 13 | OPACITY 100 14 | 15 | OUTLINECOLOR 255 0 0 16 | 17 | WIDTH 2 18 | 19 | END 20 | 21 | 22 | 23 | END 24 | -------------------------------------------------------------------------------- /tests/test_cli.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import tempfile 3 | from mappyfile import cli 4 | import pytest 5 | 6 | 7 | def test_get_mapfiles(): 8 | tf = tempfile.NamedTemporaryFile(suffix=".map") 9 | print(tf.name) 10 | 11 | mapfiles = [tf.name] 12 | found_mapfiles = cli.get_mapfiles(mapfiles) 13 | print(found_mapfiles) 14 | 15 | 16 | def run_tests(): 17 | pytest.main(["tests/test_cli.py"]) 18 | 19 | 20 | if __name__ == "__main__": 21 | logging.basicConfig(level=logging.INFO) 22 | # run_tests() 23 | test_get_mapfiles() 24 | print("Done!") 25 | -------------------------------------------------------------------------------- /tests/test_config.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | from lark import UnexpectedCharacters, UnexpectedToken, Tree 3 | from mappyfile.parser import Parser 4 | 5 | 6 | def test_parser_validation(): 7 | p = Parser() 8 | 9 | config_text_ok = """CONFIG 10 | ENV 11 | MS_MAP_PATTERN "." 12 | PROJ_LIB "C:/MapServer/bin/proj7/SHARE" 13 | END 14 | END 15 | """ 16 | tree: Tree = p.parse(config_text_ok) 17 | assert tree.data == "config" 18 | assert tree.children[0].data == "env" 19 | 20 | # Test bad punctuation 21 | config_text_bad1 = """CONFIG 22 | ENV 23 | MS_MAP_PATTERN "." 24 | PROJ_LIB" "C:/MapServer/bin/proj7/SHARE" 25 | END 26 | END 27 | """ 28 | with pytest.raises(UnexpectedCharacters) as e: 29 | p.parse(config_text_bad1) 30 | assert e.value.line == 4 31 | 32 | # Test mapfile composites inside the config 33 | config_text_bad2 = """CONFIG 34 | ENV 35 | METADATA 36 | "ows_title" "layer_0" 37 | END 38 | END 39 | END 40 | """ 41 | with pytest.raises(UnexpectedToken) as e: 42 | p.parse(config_text_bad2) 43 | -------------------------------------------------------------------------------- /tests/test_quoter.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | import logging 3 | from mappyfile.quoter import Quoter 4 | 5 | 6 | def test_standardise_quotes(): 7 | v = '"the_geom from (select * from road where "name_e"=\'Trans-Canada Highway\' order by gid) as foo using unique gid using srid=3978"' 8 | 9 | q = Quoter(quote='"') 10 | v2 = q.standardise_quotes(v) 11 | exp = r'''"the_geom from (select * from road where \"name_e\"='Trans-Canada Highway' order by gid) as foo using unique gid using srid=3978"''' 12 | assert v2 == exp 13 | 14 | q = Quoter(quote="'") 15 | v2 = q.standardise_quotes(v) 16 | exp = r"""'the_geom from (select * from road where "name_e"=\'Trans-Canada Highway\' order by gid) as foo using unique gid using srid=3978'""" 17 | assert v2 == exp 18 | 19 | 20 | def run_tests(): 21 | pytest.main(["tests/test_quoter.py"]) 22 | 23 | 24 | if __name__ == "__main__": 25 | logging.basicConfig(level=logging.INFO) 26 | test_standardise_quotes() 27 | # run_tests() 28 | print("Done!") 29 | -------------------------------------------------------------------------------- /tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geographika/mappyfile/34830f3228ce4b722229db8e7086791a88e81cd4/tree.png --------------------------------------------------------------------------------