Mercurial > mxd2map
changeset 161:3ac0968e26f3
merged with Karls repo from website
author | Stephan Holl <stephan.holl@intevation.de> |
---|---|
date | Thu, 30 Jun 2011 12:40:27 +0200 |
parents | f4ad6a74e4ef (diff) 1618d68cb723 (current diff) |
children | dd4bb5869f86 |
files | |
diffstat | 353 files changed, 10434 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,4 @@ +syntax: regexp +^mapserver/logs/ +^tmp/ +^doku/build/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ChangeLog Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,1185 @@ +2011-06-29 Stephan Holl <stephan.holl@intevation.de> + + * ttf-fonts/DejaVuSans.ttf: New. + * ttf-fonts/fonts.txt: Added FreeSans-Font as fallback for + displaying Labels + +2011-06-29 Stephan Holl <stephan.holl@intevation.de> + + * mxd/Styles/label/*: Added two examples to show basic labeling + within an MXD. More will not be supported though. + +2011-06-27 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/FillStyleWriter.java, + src/java/de/intevation/mxd/writer/LineStyleWriter.java, + src/java/de/intevation/mxd/writer/MapScriptWriter.java, + src/java/de/intevation/mxd/writer/MarkerStyleWriter.java, + src/java/de/intevation/mxd/writer/SymbolWriter.java: + Exception handling for number conversions in writer modules. + +2011-06-27 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/CartoLineSymbolReader.java: + Fixed exception handling for this reader. + +2011-06-27 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Write symbol styles in reverse order to the mapfile. + + * src/java/de/intevation/mxd/writer/LineStyleWriter.java, + src/java/de/intevation/mxd/writer/MarkerStyleWriter.java: + Create the symbol first, then set symbolname for style. + + * src/java/de/intevation/mxd/writer/SymbolWriter.java: + Test if symbol exists. If not exists, write new symbol with new + name. + +2011-06-24 Stephan Holl <stephan.holl@intevation.de> + + * INSTALL.txt: added a hint how to install the converter and its + requirements. + * doku/source/conf.py, doku/source/INSTALL.txt, + doku/source/index.txt,doku/source/restrictions.txt, + doku/source/index.rst,doku/source/restrictions.rst: renamed .rst to + .txt, linked INSTALL.txt from root into the docs. + +2011-06-24 Stephan Holl <stephan.holl@intevation.de> + + + * doku/Makefile, doku/source/conf.py, doku/source/index.rst, + doku/source/restrictions.rst: New. added stub for creating a + documentation. + +2011-06-24 Stephan Holl <stephan.holl@intevation.de> + + * moved README.txt to mxd/README_testbed.txt + +2011-06-23 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/utils/MapToXMLUtils.java, + src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Done some minor reformatings. + +2011-06-22 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/CartoLineSymbolReader.java: + Read mark and gap values from cartographic line template. + + * src/java/de/intevation/mxd/writer/LineStyleWriter.java: + Create and write pattern from mark and gap values. + +2011-06-22 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/CartoLineSymbolReader.java, + src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/FeatureLayerReader.java, + src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java, + src/java/de/intevation/mxd/reader/HashLineSymbolReader.java, + src/java/de/intevation/mxd/reader/LineFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerFillSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureLineSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleLineSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java: + Updated the default values and reader error handling. + +2011-06-22 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Split comma separated value list into single values. + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Handle join tables and create class expressions correctly for + multiple values and string values. + +2011-06-21 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/FeatureLayerReader.java: + Abort layer reading and remove layer element on error. + + * src/java/de/intevation/mxd/reader/MXDReader.java: + Handle empty layer. + + * src/java/de/intevation/mxd/utils/MapToXMLUtils.java: + Added removeLayer method to remove a broken layer from DOM. + +2011-06-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapscriptWriter.java: + Remove all whitespaces in layer name. + +2011-06-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/FillStyleWriter.java, + src/java/de/intevation/mxd/writer/LineStyleWriter.java: + Do not write lines or outlines if their width is smaller than 1.0. + +2011-06-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/FeatureLayerReader.java: + Read additional information for sde data connections. + + * src/java/de/intevation/mxd/writer/MapscriptWriter.java: + Write sde data connection information to mapfile. + +2011-06-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Insert TEMPLATE entry for GFI request. + +2011-06-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Insert metadata for layer title for getCapabilities request. + +2011-06-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Write expressions for string values to the mapfile. + +2011-06-17 Raimund Renkert <raimund.renkert@intevation.de> + + Write the correct expression for double values. + + * src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java: + Read the lower bound of the breaks. + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Write expressions for double values as range to the mapfile. + +2011-06-17 Stephan Holl <stephan.holl@intevation.de> + + * mxd/projections/DHDN-projection-dataframe.mxd: Added testcase + with DHDN-3 within a dataframe + +2011-06-17 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java: + Read label for classes. + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Write the label as class name. + +2011-06-17 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/FillStyleWriter.java: + Write PATTERN for polygon outlines and hatch symbols. + +2011-06-17 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/LineStyleWriter.java: + Write PATTERN to style block. + The pattern array must be exactly 10 in length (filled up with 0) + and patternlength must be set to the count of pattern elements. + +2011-06-16 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/IReader.java, + src/java/de/intevation/mxd/reader/MXDReader.java, + src/java/de/intevation/mxd/reader/MapReader.java: + Exceptionhandling, default values and logging for map reader. + +2011-06-16 Raimund Renkert <raimund.renkert@intevation.de> + + * conf/log4j.properties: Set console log level to INFO. + + * src/java/de/intevation/mxd/writer/FillStyleWriter.java, + src/java/de/intevation/mxd/writer/IWriter.java, + src/java/de/intevation/mxd/writer/LineStyleWriter.java, + src/java/de/intevation/mxd/writer/MapScriptWriter.java, + src/java/de/intevation/mxd/writer/MarkerStyleWriter.java, + src/java/de/intevation/mxd/writer/SymbolWriter.java: + Changed the exception handling. + + +2011-06-16 Raimund Renkert <raimund.renkert@intevation.de> + + * conf/log4j.properties: Added console appender to log4j config. + +2011-06-16 Raimund Renkert <raimund.renkert@intevation.de> + + Improved top level exception handling and logging. + + * src/java/de/intevation/mxd/Converter.java, + src/java/de/intevation/mxd/reader/FeatureLayerReader.java, + src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java, + src/java/de/intevation/mxd/reader/ILayerReader.java, + src/java/de/intevation/mxd/reader/MXDReader.java: + The converter stops if an error occured while reading the mxd file. + Replaced console output with a logger that writes to stdout. + +2011-06-16 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/FeatureLayerReader.java, + src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java, + src/java/de/intevation/mxd/reader/ILayerReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Improved exception handling for layer reader. + +2011-06-15 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/IRendererReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Improved exception handling. + +2011-06-15 Raimund Renkert <raimund.renkert@intevation.de> + + Improved exception handling. + + * src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/CartoLineSymbolReader.java, + src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/FillSymbolReader.java, + src/java/de/intevation/mxd/reader/HashLineSymbolReader.java, + src/java/de/intevation/mxd/reader/ISymbolReader.java, + src/java/de/intevation/mxd/reader/LineFillSymbolReader.java, + src/java/de/intevation/mxd/reader/LineSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureLineSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleLineSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java: + If an exception is thrown while getting symbol attributes, a default + value is set to the attribute and a warning is written to the log + file. + +2011-06-15 Stephan Holl <stephan.holl@intevation.de> + + * contrib/python/FixWorkspacePaths.py, contrib/python/foobar.py: + Added some sample-scripts for working with MXD-files + +2011-06-14 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/FeatureLayerReader.java: + Read SDE connection settings. + +2011-06-14 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/ArcGISInitializer.java: + Load the arcobjects.jar from ArcGIS install folder. + +2011-06-14 Stephan Holl <stephan.holl@intevation.de> + + * mapserver/mapfile/mxd.map: Added ows_enable_request-directive to + allow OGC-services. + +2011-06-14 Stephan Holl <stephan.holl@intevation.de> + + * mxd/connections/SDE/sde_areas.txt: New. Added hints for + cconnecting to ArcSDE. + +2011-06-10 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/ArcGISInitializer.java: + Check for ArcGISDesktop environment and added logging. + + * src/java/de/intevation/mxd/reader/MXDReader.java: + Check the initializer return value. + +2011-06-10 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Set TILEITEM to an empty string. + +2011-06-08 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/FillStyleWriter.java: + Write PATTERN to the style if a hatch symbol is used to fill a + polygon. + +2011-06-08 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/FeatureLayerReader.java: + Read the connection settings for file geodatabase. + +2011-06-07 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Set the class name to the layer name if it is empty. + +2011-06-01 Stephan Holl <stephan.holl@intevation.de> + * mapserver/symbols/symbols.sym: added a default hatch-symbol + +2011-06-01 Stephan Holl <stephan.holl@intevation.de> + + * M ttf-fonts/fonts.txt: Added a more verbose comment for removing + tspaces in font-aliases. + +2011-05-31 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Do not use LineStyleWriter cause it is not usable yet. + +2011-05-31 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Removed obsolete code. + + * src/java/de/intevation/mxd/writer/SymbolWriter.java: + Added method to save the symbolset. + +2011-05-31 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java: + Added "type" as XML attribute to symbols. + +2011-05-31 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Removed obsolete code. + +2011-05-31 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/IWriter.java, + src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Use the new classes to write the mapfile. Changed exception + handling(TODO: catch all exceptions in the writer). + + * src/java/de/intevation/mxd/writer/MarkerStyleWriter.java: + New. Write the styles for marker symbols. + + * src/java/de/intevation/mxd/writer/SymbolWriter.java: + New. Write symbols to the mapfile. + +2011-05-31 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/Converter.java: + Instantiate the mapscript writer before loading the MXD file. + This is necessary because the ArcGIS-API changes the working directory + while loading the MXD file. + +2011-05-31 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/AbstractSymbolReader.java: + Get the correct logger. + + * src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java: + Fixed the extent for this class. + +2011-05-27 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/PictureLineSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java: + Added TODOs for picture symbols. + +2011-05-27 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/AbstractSymbolReader.java, + src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/CartoLineSymbolReader.java, + src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/FeatureLayerReader.java, + src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java, + src/java/de/intevation/mxd/reader/HashLineSymbolReader.java, + src/java/de/intevation/mxd/reader/ILayerReader.java, + src/java/de/intevation/mxd/reader/ISymbolReader.java, + src/java/de/intevation/mxd/reader/LineFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureLineSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleLineSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Removed needless imports. + +2011-05-27 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/HashLineSymbolReader.java: + Use the Wrapper for line symbols to read the line. + +2011-05-27 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/CartoLineSymbolReader.java, + src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/HashLineSymbolReader.java, + src/java/de/intevation/mxd/reader/LineFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureLineSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleLineSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java: + All symbol reader now extend the abstract symbol reader. + +2011-05-27 Raimund Renkert <raimund.renkert@intevation.de> + + Added line fill symbol reader. + + * src/java/de/intevation/mxd/reader/FillSymbolReader.java: + Use the new reader to get line fill symbol attributes. + + * src/java/de/intevation/mxd/reader/LineFillSymbolReader.java: + New. + +2011-05-27 Raimund Renkert <raimund.renkert@intevation.de> + + Added marker fill symbol reader. + + * src/java/de/intevation/mxd/reader/FillSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerFillSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java: + Use the new reader to get marker fill symbol attributes. + + * src/java/de/intevation/mxd/reader/MarkerFillSymbolReader.java: + New. + +2011-05-26 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/CartoLineSymbolReader.java, + src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/FeatureLayerReader.java, + src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java, + src/java/de/intevation/mxd/reader/HashLineSymbolReader.java, + src/java/de/intevation/mxd/reader/ILayerReader.java, + src/java/de/intevation/mxd/reader/IRendererReader.java, + src/java/de/intevation/mxd/reader/MXDReader.java, + src/java/de/intevation/mxd/reader/MarkerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureLineSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleLineSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Catch all exceptions in the MXDReader. + +2011-05-26 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Use the wrapper to read symbols. + +2011-05-26 Raimund Renkert <raimund.renkert@intevation.de> + + Added wrapper for fill symbol reader. + + * src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java: + Use the wrapper to read the fill symbols. + + * src/java/de/intevation/mxd/reader/FillSymbolReader.java: + New. + + * src/java/de/intevation/mxd/reader/LineSymbolReader.java: + Added methods for the ILineSymbol interface. + +2011-05-26 Raimund Renkert <raimund.renkert@intevation.de> + + Added wrapper for line symbol reader. + + * src/java/de/intevation/mxd/reader/ISymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java: + Use the new wrapper to read line symbols. + + * src/java/de/intevation/mxd/reader/LineSymbolReader.java: + New. + +2011-05-26 Raimund Renkert <raimund.renkert@intevation.de> + + Added wrapper for marker symbol reader and extracted methods from symbol + readers. + + * src/java/de/intevation/mxd/reader/AbstractSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerSymbolReader.java: + New. + + * src/java/de/intevation/mxd/reader/ISymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Removed obsolete code fragments. + +2011-05-26 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/HashLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MXDReader.java, + src/java/de/intevation/mxd/reader/MarkerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerFillSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java: + Removed console outputs. + +2011-05-26 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/SimpleRendererReader.java: + Read multi layer fill symbols. + + * src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java: + Read attributes and outline. + + * src/java/de/intevation/mxd/reader/MultiLayerFillSymbolReader.java: + New. Reads fill symbols. + +2011-05-25 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/CartoLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MarkerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureLineSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleLineSymbolReader.java: + Added constructor for ILineSymbols. + + * src/java/de/intevation/mxd/reader/HashLineSymbolReader.java: + Read the hash symbol. + +2011-05-25 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java: + Read hash line symbols using the new HashLineSymbolReader. + + * src/java/de/intevation/mxd/reader/HashLineSymbolReader.java: + New. Reads hash line symbols. + +2011-05-25 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java: + Read cartographic line symbols using the new CartoLineSymbolReader. + + * src/java/de/intevation/mxd/reader/CartoLineSymbolReader.java: + New. Reads cartographic line symbols. + +2011-05-24 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java: + Read picture line symbols using the new PictureSymbolReader. + + * src/java/de/intevation/mxd/reader/PictureLineSymbolReader.java: + New. Reads picture line symbols. + +2011-05-24 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java: + Read the marker line symbols using the new MarkerLineSymbolReader. + + * src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java: + Added constructor with IMarkerSymbol parameter. + + * src/java/de/intevation/mxd/reader/MarkerLineSymbolReader.javai: + New. Reads marker line symbols. + +2011-05-24 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/FeatureLayerReader.java: + Set the layer type to line when reading a line layer. + + * src/java/de/intevation/mxd/reader/SimpleLineSymbolReader.java: + Added style option and renamed xml node "style" to "linestyle". + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Prepared the mapfile writer to write line symbols. + +2011-05-23 Raimund Renkert <raimund.renkert@intevation.de> + + Added first line symbol reader. + + * src/java/de/intevation/mxd/reader/SimpleRendererReader.java: + Read line symbols with the new MultiLayLineSymbolReader. + + * src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleLineSymbolReader.java: + New. The MultiLayerLineSymbolReader reads lines from different layers + using the LineSymbolReader. + +2011-05-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/SimpleRendererReader.java: + Added TODO for line symbol reader. + +2011-05-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Write the symbols-file to the mapfile path. + +2011-05-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/FeatureLayerReader.java: + Read the workspace path. + + * src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java: + Added reader for picture marker symbols. + + * src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java: + New. Read picture symbols from mxd-file. + +2011-05-17 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/MapReader.java, + src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Set the projection "EPSG:31467" and units "METERS" as default if the + MXD values are unknown. + +2011-05-16 Raimund Renkert <raimund.renkert@intevation.de> + + * build.xml: Set the classpath for the executabel jar file. The path to + the external libraries (lib/) is relative to the executable. + + * src/java/de/intevation/mxd/Converter.java: + Use commandline arguments to set the filenames for the MXD-, MAP- and + the template file. If no arguments are used, read the filenames from + the converter.properties file. + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Use the template file for mapfile creation. + + * converter.properties.sample: New. Example for the properties file. + +2011-05-16 Stephan Holl <stephan.holl@intevation.de> + + * doku/funktionsweise/Makefile, + doku/funktionsweise/funktionsweise-MXD-konverter.svg: New. Added + a schema how the converter works + +2011-05-11 Stephan Holl <stephan.holl@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: Added + the (currently) hard-coded template-path to the + mapObj-constructor; removed some TODO-settings. + +2011-05-11 Stephan Holl <stephan.holl@intevation.de> + + * mapserver/rundir/Readme.txt: New. This is a folder containing the + MXD-files for conversion. The resulting MAP-file can be run from + here; all Paths are relative from here so request will find its + symbols, fonts, logfiles etc. + + * mapserver/mapfile/mapfile_header.include: Added SHAPEPATH for + the Visualization of the frida-shapefiles. + +2011-05-10 Stephan Holl <stephan.holl@intevation.de> + + * mapserver/mapfile/mapfile_header.include, mapserver/mapfile/mxd.map, + mapserver/symbols/symbols.sym: Optimized the mapfile to use as a + template when instantiating the new mapObj. + +2011-05-10 Stephan Holl <stephan.holl@intevation.de> + + * properties.xml: Adopt build-path to Windows-TMP-folder + +2011-04-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Created one method for each symbol type. + Write the character symbol attributes to the map. + +2011-04-20 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java: + Read all the font attributes. + +2011-04-19 Raimund Renkert <raimund.renkert@intevation.de> + + Added CharacterMarkerSymbol reader and extracted the ArrowMarkerSymbol + reader. + + * src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java: + Extracted the ArrowMarkerSymbol. + * src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java: + New. + +2011-04-18 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/SimpleRendererReader.java: + Added MultiLayerMarkerSymbol support. + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Write ArrowMarker to the map. + + * src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java: + New. Reads multi layer marker symbols. + +2011-04-18 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java: + Added support for SimpleMarkerSymbol and SimpleFillSymbol. + +2011-04-18 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Create one renderer element in the dom for each mapserver class with its + attributes and expression. + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: Write the + expression for the mapserver class. + +2011-04-15 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/ArcGISInitializer.java, + src/java/de/intevation/mxd/Converter.java, + src/java/de/intevation/mxd/reader/FeatureClassReader.java, + src/java/de/intevation/mxd/reader/FeatureLayerReader.java + src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java, + src/java/de/intevation/mxd/reader/MXDReader.java, + src/java/de/intevation/mxd/reader/MapReader.java, + src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java, + src/java/de/intevation/mxd/utils/MapToXMLUtils.java, + src/java/de/intevation/mxd/writer/IWriter.java, + src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Added comments, done some code styling and removed typos. + +2011-04-15 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/FeatureLayerReader.java: + Read the data source name for layer objects. + + * src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java: + Changed color processing. + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + First implementation that generates valid mapfiles for simple point + mxdfiles. + +2011-04-14 Raimund Renkert <raimund.renkert@intevation.de> + + Introduced MapScript writer. + + * M src/java/de/intevation/mxd/Converter.java: Added mapscript writer. + + * src/java/de/intevation/mxd/writer/IWriter.java, + src/java/de/intevation/mxd/writer/MapScriptWriter.java: + New. The MapScript writer uses the Java MapScript API to create a mapfile. + +2011-04-14 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/FeatureLayerReader.java: + Read the layer type. + + * src/java/de/intevation/mxd/reader/MXDReader.java: Updated the reader to + use the XML utilities here. + +2011-04-14 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/MapReader.java: + Read further map attributes. + +2011-04-14 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/utils/MapToXMLUtils.java: + Added root element to document and save the filename in the XML tree. + +2011-04-13 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * A contrib/sh/test_mxd.cgi + Added a new mapserver wrapper cgi script for testing of generated map + from bsh-mxd-converter. + +2011-04-12 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java, + src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java: + New. + + * src/java/de/intevation/mxd/reader/MXDReader.java: + Use new layer reader to get layer attributes. + + * src/java/de/intevation/mxd/reader/SimpleRendererReader.java: + Read symbol attributes using the new symbol reader. + +2011-04-12 Raimund Renkert <raimund.renkert@intevation.de> + + * build.xml: Changed classname for converter entry point. + +2011-04-12 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/Converter.java, + src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/FeatureClassReader.java, + src/java/de/intevation/mxd/reader/FeatureLayerReader.java, + src/java/de/intevation/mxd/reader/MXDReader.java, + src/java/de/intevation/mxd/reader/MapReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java, + src/java/de/intevation/mxd/utils/MapToXMLUtils.java: + Removed needless imports. + +2011-04-12 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/ArcGISInitializer.java, + src/java/de/intevation/mxd/Converter.java, + src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/FeatureClassReader.java, + src/java/de/intevation/mxd/reader/FeatureLayerReader.java, + src/java/de/intevation/mxd/reader/IClassReader.java, + src/java/de/intevation/mxd/reader/ILayerReader.java, + src/java/de/intevation/mxd/reader/IReader.java, + src/java/de/intevation/mxd/reader/IRendererReader.java, + src/java/de/intevation/mxd/reader/ISymbolReader.java, + src/java/de/intevation/mxd/reader/MXDReader.java, + src/java/de/intevation/mxd/reader/MapReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java, + src/java/de/intevation/mxd/utils/XMLUtils.java: + Separated converter components into packages. + +2011-04-11 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java: Convert + symbol color to RgbColor and write values to XML document. + +2011-04-11 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/FeatureClassReader.java, + src/java/de/intevation/mxd/reader/FeatureLayerReader.java, + src/java/de/intevation/mxd/reader/MXDReader.java, + src/java/de/intevation/mxd/reader/MapReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Store all attributes in an XML document using the new utility class. + + * src/java/de/intevation/mxd/reader/ILayerReader.java, + src/java/de/intevation/mxd/reader/IRendererReader.java, + src/java/de/intevation/mxd/reader/ISymbolReader.java: Updated interfaces. + + * src/java/de/intevation/mxd/utils/MapToXMLUtils.java: New. Utility class to + store map information in a XML structure. + +2011-04-08 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/MXDReader.java: Added class reader. + + * src/java/de/intevation/mxd/reader/FeatureClassReader.java, + src/java/de/intevation/mxd/reader/IClassReader.java: New. + +2011-04-08 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/FeatureLayerReader.java: + Write Attributes to the XML document. + + * src/java/de/intevation/mxd/reader/MXDReader.java: Set XML document to + layer reader and print the document. + +2011-04-08 Raimund Renkert <raimund.renkert@intevation.de> + + * build.xml: Added parameter for MXD filename. + + * src/java/de/intevation/mxd/Converter.java: Read MXD filename from + properties. + +2011-04-08 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/reader/IReader.java: Added XML document to + store map information. + + * src/java/de/intevation/mxd/reader/MXDReader.java: Write the information to + the XML document. + + * src/java/de/intevation/mxd/reader/MapReader.java: Write map information to + the XML document. + + * src/java/de/intevation/mxd/utils/XMLUtils.java: New. Helper class to + create and manipulate XML documents. + +2011-04-08 Raimund Renkert <raimund.renkert@intevation.de> + + Moved reader components to reader folder. + + * src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/FeatureLayerReader.java, + src/java/de/intevation/mxd/reader/ILayerReader.java, + src/java/de/intevation/mxd/reader/IReader.java, + src/java/de/intevation/mxd/reader/IRendererReader.java, + src/java/de/intevation/mxd/reader/ISymbolReader.java, + src/java/de/intevation/mxd/reader/MXDReader.java, + src/java/de/intevation/mxd/reader/MapReader.java, + src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Moved. + +2011-04-08 Raimund Renkert <raimund.renkert@intevation.de> + + * src/java/de/intevation/mxd/Converter.java: Initial implementation for the + MXD-Converter. + + * src/java/de/intevation/mxd/ArcGISInitializer.java, + src/java/de/intevation/mxd/IReader.java, + src/java/de/intevation/mxd/MXDReader.java, + src/java/de/intevation/mxd/MapReader.java, + src/java/de/intevation/mxd/ILayerReader.java, + src/java/de/intevation/mxd/IRendererReader.java, + src/java/de/intevation/mxd/ISymbolReader.java, + src/java/de/intevation/mxd/FeatureLayerReader.java, + src/java/de/intevation/mxd/SimpleMarkerSymbolReader.java, + src/java/de/intevation/mxd/SimpleRendererReader.java, + src/java/de/intevation/mxd/UniqueValueRendererReader.java, + src/java/de/intevation/mxd/ClassBreakRendererReader.java: + New. Initial implementation for the MXD converter. + + * conf/log4j.properties: New. Contains the log4j configuration. + +2011-04-04 Ingo Weinzierl <ingo@intevation.de> + + * src/java/de/intevation/mxd/Converter.java: + New. This class represents the entry point of the mxd converter tool. + +2011-03-07 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mapserver/mapfile/mapfile_header.include: + Pointed to right epsg file. + * A mapserver/epsg/epsg, + R mapserver/epsg/epsg.txt: + Renamed epsg file. + +2011-03-07 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mxd/Styles/point/SimpleMarkerSymbol/TODO.txt: + Addes hints for ColorRamps in mapserver. + +2011-03-07 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mapserver/mapfile/mxd.map, + M mapserver/symbols/symbols.sym, + A mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.map, + A mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.sym, + R mxd/Styles/line/CartographicLineSymbol/TODO.txt: + Added missing map and symbology file for testcase multilayer CartographicLineSymbol. + +2011-03-07 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * A mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.lyr, + A mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.mxd, + A mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.png, + A mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.txt, + R mxd/Styles/line/CartographicLineSymbol/l_cartoline_0,4pt_c255-255-255_butt-round_template_multilayer.lyr, + R mxd/Styles/line/CartographicLineSymbol/l_cartoline_0,4pt_c255-255-255_butt-round_template_multilayer.mxd, + R mxd/Styles/line/CartographicLineSymbol/l_cartoline_0,4pt_c255-255-255_butt-round_template_multilayer.png, + R mxd/Styles/line/CartographicLineSymbol/l_cartoline_0,4pt_c255-255-255_butt-round_template_multilayer.txt: + Renamed. + +2011-03-07 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mxd/Styles/point/CharacterMarkerSymbol/p_charmarker_18pt_c255-0-0.sym, + M mxd/Styles/point/CharacterMarkerSymbol/p_single_18pt_c255-255-255_ttf.sym: + Making CharacterMarkerSymbol work. Fixed CHARACTER notation. + * M ttf-fonts/fonts.txt: + Swapped columns to the right order (alias fontfile). + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * A .hgignore: + Added initial .hgignore. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mxd/Styles/polygon/LineFillSymbol/pol_linefill_255-0-0_45_outline.map, + M mxd/Styles/polygon/LineFillSymbol/pol_linefill_255-0-0_45_outline.sym: + + Modified polygon style LineFillSymbol mapfile testcase. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mxd/Styles/polygon/SimpleFillSymbol/pol_simple_255-0-0.map, + M mxd/Styles/polygon/SimpleFillSymbol/pol_simple_255-0-0.sym, + M mxd/Styles/polygon/SimpleFillSymbol/pol_simple_transp_dashed-outline.map, + M mxd/Styles/polygon/SimpleFillSymbol/pol_simple_transp_dashed-outline.sym: + + Modified polygon style SimpleFillSymbol mapfile testcase. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * A images/grass.png, + A mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.lyr, + A mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.map, + A mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.mxd, + A mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.png, + A mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.sym, + A mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.txt, + R mxd/Styles/polygon/PictureFillSymbol/pol_single_0,4pt_109-187-67_0-1-1_Grassland.lyr, + R mxd/Styles/polygon/PictureFillSymbol/pol_single_0,4pt_109-187-67_0-1-1_Grassland.map, + R mxd/Styles/polygon/PictureFillSymbol/pol_single_0,4pt_109-187-67_0-1-1_Grassland.mxd, + R mxd/Styles/polygon/PictureFillSymbol/pol_single_0,4pt_109-187-67_0-1-1_Grassland.png, + R mxd/Styles/polygon/PictureFillSymbol/pol_single_0,4pt_109-187-67_0-1-1_Grassland.sym, + R mxd/Styles/polygon/PictureFillSymbol/pol_single_0,4pt_109-187-67_0-1-1_Grassland.txt: + + Modified polygon style PictureFillSymbol mapfile testcase. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * A mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1.lyr, + A mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1.map, + A mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1.mxd, + A mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1.png, + A mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1.sym, + A mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1.txt, + R mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1,0.lyr, + R mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1,0.map, + R mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1,0.mxd, + R mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1,0.png, + R mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1,0.sym, + R mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1,0.txt: + + Modified polygon style MarkerFillSymbol mapfile testcase. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * A mxd/Styles/line/MarkerLineSymbol/l_markerline_18pt_0-0-0_raute.map, + A mxd/Styles/line/MarkerLineSymbol/l_markerline_18pt_0-0-0_raute.sym: + + Modified line style MarkerLineSymbol mapfile testcase. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mxd/Styles/line/SimpleLineSymbol/l_dash-dott-dott_1pt_c255-255-255.map, + M mxd/Styles/line/SimpleLineSymbol/l_dash-dott-dott_1pt_c255-255-255.sym, + M mxd/Styles/line/SimpleLineSymbol/l_dash-dotted_1pt_c255-255-255.map, + M mxd/Styles/line/SimpleLineSymbol/l_dash-dotted_1pt_c255-255-255.sym, + M mxd/Styles/line/SimpleLineSymbol/l_dashed_1pt_c255-255-255.map, + M mxd/Styles/line/SimpleLineSymbol/l_dashed_1pt_c255-255-255.sym, + M mxd/Styles/line/SimpleLineSymbol/l_dotted_1pt_c255-255-255.map, + M mxd/Styles/line/SimpleLineSymbol/l_dotted_1pt_c255-255-255.sym, + M mxd/Styles/line/SimpleLineSymbol/l_solid_1pt_c255-255-255.map, + M mxd/Styles/line/SimpleLineSymbol/l_solid_1pt_c255-255-255.sym, + M mxd/Styles/line/SimpleLineSymbol/l_solid_4pt_c255-255-255.map: + + Modified line style SimpleLineSymbol mapfile testcases. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mxd/Styles/line/PictureLineSymbol/l_pictureline_brick1_1_1_1-0-0-0.sym, + A images/brick1.png, + A mxd/Styles/line/PictureLineSymbol/l_pictureline_brick1_1_1_1-0-0-0.map: + + Modified line style PictureLineSymbol mapfile testcases. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-bever.map, + M mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-bever.sym, + M mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-miter.map, + M mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-miter.sym, + M mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-round.map, + M mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-round.sym, + M mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_round-butted.map, + M mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_round-butted.sym, + M mxd/Styles/line/CartographicLineSymbol/l_cartoline_6pt_c255-255-255_butt-round_template.map, + M mxd/Styles/line/CartographicLineSymbol/l_cartoline_6pt_c255-255-255_butt-round_template.sym: + + Modified line style CartographicLineSymbol mapfile testcases. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mxd/Styles/point/SimpleMarkerSymbol/p_single_4pt_c255-0-0.map, + M mxd/Styles/point/SimpleMarkerSymbol/p_single_4pt_c255-0-0.sym: + + Modified point style SimpleMarkerSymbol mapfile testcase. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mxd/Styles/point/PictureMarkerSymbol/p_pictmarker_11pt_warning.bmp.map, + M mxd/Styles/point/PictureMarkerSymbol/p_pictmarker_11pt_warning.bmp.sym, + A images/warning.png: + + Modified point style PictureMarkerSymbol mapfile testcase. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * A mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12-0.lyr, + A mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12-0.map, + A mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12-0.mxd, + A mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12-0.png, + A mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12-0.sym, + A mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12-0.txt, + R mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12,0-0,0.lyr, + R mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12,0-0,0.map, + R mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12,0-0,0.mxd, + R mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12,0-0,0.png, + R mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12,0-0,0.sym, + R mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12,0-0,0.txt: + + Modified point style ArrowMarkerSymbol mapfile testcase. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mxd/Styles/point/CharacterMarkerSymbol/p_charmarker_18pt_c255-0-0.map, + M mxd/Styles/point/CharacterMarkerSymbol/p_charmarker_18pt_c255-0-0.sym, + M mxd/Styles/point/CharacterMarkerSymbol/p_single_18pt_c255-255-255_ttf.map, + M mxd/Styles/point/CharacterMarkerSymbol/p_single_18pt_c255-255-255_ttf.sym: + + Modifed point style CharacterMarkerSymbol mapfile testcase. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M mapserver/mapfile/mapfile_header.include: + Adjusted CONFIG "MS_ERRORFILE". and + Commented out CONFIG "PROJ_LIB", because it doesn' work. + + * M mapserver/mapfile/mxd.map: + Added mxd testcase map files. + + * M mapserver/symbols/symbols.sym: + Added mxd testcase sym files. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * R mapserver/logs/ms_error.log: + Removed. + +2011-03-04 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M contrib/apache/mxd-testbed.conf: + Adjustment for the mxd-testbed. + * M contrib/sh/wms_mxd.cgi: + chmod 755 + +2011-03-03 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * M README.txt: + Concretions + +2011-03-03 Bjoern Schilberg <bjoern.schilberg@intevation.de> + + * A README.txt: + Added initial README for setting up apache. + * A contrib/apache/mxd-testbed.conf: + Added initial vhost configuration for mxd-testbed. + * A contrib/sh/wms_mxd.cgi: + Added initial mapserver wrapper script.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/INSTALL.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,74 @@ +------------ +Requirements +------------ + +The current version of the converter only runs on Windows. This is because +the ArcObjects JDK API is not running properly on Linux though. + +To run the converter you need at least the following componentes: + + * Sun Java6 SDK to build, JRE to run + * ArcGIS Desktop10.x or ArcEngine10.x with a valid licence enabled + * UMN MapServer with Java MapScript-bindings (recent development-version) + * Apache Webserver for displaying the resulting Mapfiles + * Optional: MapServer compiled with ArcSDE-plugin + * Optional: GDAL/OGR compiled with ArcSDE-support + * Optional: GDAL/OGR compiled with FileGeodatabase-support + + + +------------ +Installation +------------ + +Compile the converter-sources +----------------------------- + +To compile the sources you need to have a properly configured +ant-environmet available. ArcGIS SDK provides an ant-installation which +suffices:: + + ant jar + +Install Apache Webserver +------------------------ + +Install Apache webserver by exedcuting the .msi-file and follow the +install-dialogs:: + + httpd-2.2.19-win32-x86-openssl-0.9.8r.msi + +Make sure that you install apache as a service so it will be available +directly after system bootup. + + +Install UMN MapServer +--------------------- + +The current documentation uses the Windows binary-builds from http://www.gisinternals.com/sdk/ + +1. Unzip the ZIP-file at c:/ms_6.1-dev + +#. Configure Apache Webserver to find the cgi-bin-folder:: + + ScriptAlias /cgi-bin/ "C:/ms_6.1-dev/bin/" + + <Location "/cgi-bin"> + Options None + Order allow,deny + Allow from all + </Location> + +#. Copy mapserv.exe from c:/ms_6.1-dev/bin/apps/ms to c:/ms_6.1-dev/bin/ + +Create run-environment +---------------------- + +writeme + + +----- +Usage +----- + +writeme
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build.xml Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,95 @@ +<?xml version="1.0"?> +<!DOCTYPE project[ + <!ENTITY properties SYSTEM "properties.xml"> +]> +<!-- :mode=ant --> + +<project name="MXD-Konverter" default="all" basedir="."> + <!-- import external XML fragments --> + &properties; + <!-- import sample properties --> + <!-- TODO: edit sample.properties file before importing --> + <property file="sample.properties"/> + <path id="compile.classpath"> + <pathelement location="${arcobjects.jar}"/> + <fileset dir="${libs.dir}"> + <include name="**/*.jar"/> + </fileset> + </path> + <path id="run.classpath"> + <path refid="compile.classpath"/> + <pathelement location="${class.dir}"/> + <pathelement location="${src.dir}"/> + </path> + + <!-- ========================================= --> + <!-- private targets --> + <!-- ========================================= --> + <target name="init"> + <!-- create the time stamp --> + <tstamp/> + <!-- create the build directory structure used by compile --> + <mkdir dir="${build.dir}"/> + <mkdir dir="${class.dir}"/> + </target> + + <target name="validate-runtime" depends="init"> + <condition property="runtimeAvailable"> + <isset property="runtime.home"/> + </condition> + <fail message="No runtime installed. You need to install ArcGIS Engine, Desktop or Server to run this sample." unless="runtimeAvailable"/> + </target> + + <target name="compile" depends="validate-runtime"> + <!-- javac resolver needed to run inside of Websphere Studio --> + <available classname="org.eclipse.core.launcher.Main" property="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" classpath="${java.class.path}" /> + <!-- compile the java code from ${src.dir} into ${class.dir} --> + <javac srcdir="${src.dir}" destdir="${class.dir}" debug="on"> + <classpath refid="compile.classpath"/> + </javac> + <copy todir="${class.dir}"> + <fileset dir="${src.dir}" includes="**/icons/*" /> + </copy> + </target> + + <target name="jar" depends="compile"> + <mkdir dir="${dist.dir}" /> + <jar jarfile="${dist.dir}/${sample.dir}.jar" compress="true" basedir="${class.dir}"> + <manifest> + <attribute name="Main-Class" value="de.intevation.mxd.Converter"/> + <attribute name="Class-Path" value="lib/log4j-1.2.16.jar lib/mapscript.jar lib/arcobjects.jar"/> + </manifest> + </jar> + </target> + + <target name="usage"> + <echo message="Execute 'ant -projecthelp' for the build file help"/> + <echo message="Execute 'ant -help' for Ant help"/> + </target> + + <target name="execute" depends="compile"> + <java classname="de.intevation.mxd.Converter" failonerror="true" fork="true"> + <jvmarg value="-Xss2m"/> + <classpath refid="run.classpath"/> + <sysproperty key="mxd.file" value="${MXDFILE}"/> + </java> + </target> + + <!-- ========================================= --> + <!-- public targets --> + <!-- ========================================= --> + + <target name="all" depends="compile" description="build everything"> + <echo message="application built"/> + </target> + + <target name="clean" description="clean all build products"> + <!-- delete the ${build} directory trees --> + <delete dir="${build.dir}"/> + <echo message="build directory gone!"/> + </target> + + <target name="help" depends="usage" description="usage" /> + <target name="dist" depends="jar" description="create distributable products" /> + <target name="run-sample" depends="execute" description="execute the sample with args set in sample.properties"/> +</project>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/conf/log4j.properties Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,16 @@ +#### Log just errors and warnings to a file. +log4j.rootLogger=DEBUG, MXD, Console + +log4j.appender.MXD=org.apache.log4j.RollingFileAppender +log4j.appender.MXD.File=./logs/console-client.log +log4j.appender.MXD.MaxFileSize=5000KB +log4j.appender.MXD.MaxBackupIndex=1 +log4j.appender.MXD.layout=org.apache.log4j.PatternLayout +log4j.appender.MXD.layout.ConversionPattern=%d [%t] %-5p %c - %m%n + +#log4j.rootLogger=WARN, Console +log4j.appender.Console=org.apache.log4j.ConsoleAppender +log4j.appender.Console.Threshold=INFO +log4j.appender.Console.layout=org.apache.log4j.PatternLayout +log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/apache/mxd-testbed.conf Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,105 @@ +# +# VirtualHost template +# Note: to use the template, rename it to /etc/apache2/vhost.d/yourvhost.conf. +# Files must have the .conf suffix to be loaded. +# +# See /usr/share/doc/packages/apache2/README.QUICKSTART for further hints +# about virtual hosts. +# +# NameVirtualHost statements can be added to /etc/apache2/listen.conf. +# +# Almost any Apache directive may go into a VirtualHost container. +# The first VirtualHost section is used for requests without a known +# server name. +# +<VirtualHost *:80> + ServerAdmin webmaster@dummy-host.example.com + ServerName dummy-host.example.com + + # DocumentRoot: The directory out of which you will serve your + # documents. By default, all requests are taken from this directory, but + # symbolic links and aliases may be used to point to other locations. + DocumentRoot /home/intevation/mxd-testbed/web + + # if not specified, the global error log is used + ErrorLog /var/log/apache2/mxd-testbed_error.log + CustomLog /var/log/apache2/mxd-testbed_access.log combined + + # don't loose time with IP address lookups + HostnameLookups Off + + # needed for named virtual hosts + UseCanonicalName Off + + # configures the footer on server-generated documents + ServerSignature On + + + # Optionally, include *.conf files from /etc/apache2/conf.d/ + # + # For example, to allow execution of PHP scripts: + # + # Include /etc/apache2/conf.d/mod_php4.conf + # + # or, to include all configuration snippets added by packages: + # Include /etc/apache2/conf.d/*.conf + + + # ScriptAlias: This controls which directories contain server scripts. + # ScriptAliases are essentially the same as Aliases, except that + # documents in the realname directory are treated as applications and + # run by the server when requested rather than as documents sent to the client. + # The same rules about trailing "/" apply to ScriptAlias directives as to + # Alias. + # + ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/" + + # "/srv/www/cgi-bin" should be changed to whatever your ScriptAliased + # CGI directory exists, if you have one, and where ScriptAlias points to. + # + <Directory "/srv/www/cgi-bin"> + AllowOverride None + Options +ExecCGI -Includes +FollowSymLinks + Order allow,deny + Allow from all + + </Directory> + + + + # + # This should be changed to whatever you set DocumentRoot to. + # + <Directory "/home/intevation/mxd-testbed/web"> + + # + # Possible values for the Options directive are "None", "All", + # or any combination of: + # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews + # + # Note that "MultiViews" must be named *explicitly* --- "Options All" + # doesn't give it to you. + # + # The Options directive is both complicated and important. Please see + # http://httpd.apache.org/docs-2.2/mod/core.html#options + # for more information. + # + Options Indexes FollowSymLinks + + # + # AllowOverride controls what directives may be placed in .htaccess files. + # It can be "All", "None", or any combination of the keywords: + # Options FileInfo AuthConfig Limit + # + AllowOverride None + + # + # Controls who can get stuff from this server. + # + Order allow,deny + Allow from all + + </Directory> + +</VirtualHost> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/python/FixWorkspacePaths.py Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,34 @@ +import arcpy, os + +inputMXD = arcpy.GetParameterAsText(0) + +newpath = r'C:\mxd-konverter\testdata-frida' + +rootdir = inputMXD + +for root, subFolders, files in os.walk(rootdir): + for file in files: + f = os.path.join(root, file) + if os.path.isfile(f): + basename, extension = os.path.splitext(f) + if extension.lower() == ".mxd": + print "Bearbeitet Dokument %s" % f + mxd = arcpy.mapping.MapDocument(f) + #Report broken sources + if len(arcpy.mapping.ListBrokenDataSources(mxd)) > 0: + for brkLyr in arcpy.mapping.ListBrokenDataSources(mxd): + if brkLyr.supports("dataSource"): + oldpath = brkLyr.dataSource + oldworkspace = brkLyr.workspacePath + print "Old dataSource-Path %s, old workspacePath %s " % (oldpath, oldworkspace) + # Replace + brkLyr.findAndReplaceWorkspacePath(oldworkspace, newpath) + print "Corrected path: %s" % brkLyr.workspacePath + print "Corrected dataSource: %s" %brkLyr.dataSource + mxd.save() + print "Wrote file %s" % f + print arcpy.GetMessages() + else: + print "keine kaputten Layer gefunden" + +del mxd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/python/foobar.py Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,68 @@ +# Author: ESRI +# Date: July 5, 2010 +# Version: ArcGIS 10.0 +# Summary: This script will add a layer file into a map document. The script +# must be run from within ArcMap because it references the CURRENT +# map document. The purpose of the script is to create a user +# friendly tool that allows users to simply add a layer from a list +# of existing layer files all stored in a common location. A validation +# script is used to automatically populate two of the parameters. +# The parameters are: +# 1) Browse to a folder that contains layer files. This could be +# hard coded within the validation script eliminating the need +# for entering this parameter. +# 2) Select a layer file from the list. This is auto populated +# using a validation script. +# 3) Select a data frame. This is also auto populated using a +# validation script. +# 4) Select one of 3 placement positions. +# +# Note: This script tool will only work if background processing is disabled. +# because CURRENT is being used. +# Note: To run the script from ArcMap either run the script tool from the +# Catalog window from within ArcMap or add the script tool into the UI +# via the customize dialog box [Geoprocessing Tools]. + +import arcpy +import shlex, subprocess + +#Helper for executing an external shell-scrip or programm +def executeCommand(command): + success = False + try: + args = shlex.split(command) + p = subprocess.Popen(args) + p.wait() + + returnCode = p.returncode + + if (returnCode == 0): + success = True + else: + print "Subproccess terminates with %s. This is an error"\ + % returnCode + except OSError, err: + success = False + + return success + +try: + #Read parameters from dialog + inputMXD = arcpy.GetParameterAsText(0) + outputMXD = arcpy.GetParameterAsText(1) + template = arcpy.GetParameterAsText(2) + + print "InputMXD: %s,\nOutputMXD: %s" % (inputMXD, outputMXD) + + # execute Java-command for converting + javacmd = "-Dmapserver.library.name=lib/mapscript -jar mxd-testbed_sh.jar" + javafiles = "-mxd %s -map %s -template %s " % (inputMXD, outputMXD, template) + + cmd = "java "+ javafiles + javacmd + print cmd + executeCommand(cmd) + +except Exception, e: + import traceback + map(arcpy.AddError, traceback.format_exc().split("\n")) + arcpy.AddError(str(e))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/sh/test_mxd.cgi Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,5 @@ +#!/bin/sh +# SLES compatible +MS_MAPFILE=/tmp/test.map +export MS_MAPFILE +/srv/www/cgi-bin/mapserv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/sh/wms_mxd.cgi Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,5 @@ +#!/bin/sh +# SLES compatible +MS_MAPFILE=/home/intevation/mxd-testbed/mapserver/mapfile/mxd.map +export MS_MAPFILE +/srv/www/cgi-bin/mapserv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/converter.properties.sample Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,4 @@ +# Java properties file for the MXD Converter Tool. +mxd = \\full\\path\\to\\mxd-file +map = \\full\\path\\to\\map-file +map-template = \\full\\path\\to\\mapfile-template
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doku/Makefile Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,130 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest + +help: + @echo "Please use \`make <target>' where <target> is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + -rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/MXD2map.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/MXD2map.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/MXD2map" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/MXD2map" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + make -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt."
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doku/funktionsweise/Makefile Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,39 @@ +# Makefile to get images from vector drawings. +# Sketch (.sk) +# SVG (.sk) + +SKS=$(wildcard *.sk) +SVG=$(wildcard *.svg) +PNG=$(wildcard *.png) + +OUTPUT_PNG_SK=$(SKS:sk=png) +OUTPUT_PNG_SVG=$(SVG:svg=png) +OUTPUT_PS_PNG=$(PNG:png=ps) +OUTPUT_PS_SVG=$(SVG:svg=eps) + +all: png + +png: $(OUTPUT_PNG_SK) $(OUTPUT_PNG_SVG) + +ps: $(OUTPUT_PS_SVG) $(OUTPUT_PS_PNG) + +%.png: %.sk + sk2ppm --bbox $*.sk | pnmtopng - > $*.png + +%.png: %.svg + inkscape -d 150 -D -e $*.png $*.svg + +%.ps: %.png + convert $*.png $*.ps + +%.eps: %.svg + inkscape -d 150 -D -E $*.eps $*.svg + +clean: + rm -f $(OUTPUT_PNG_SK) 2>/dev/null; true + rm -f $(OUTPUT_PNG_SVG) 2>/dev/null; true + rm -f $(OUTPUT_PS_PNG) 2>/dev/null; true + rm -f $(OUTPUT_PS_SVG) 2>/dev/null; true + + +.PHONY: png ps clean
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doku/funktionsweise/funktionsweise-MXD-konverter.svg Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,514 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="545.669" + height="481.889" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="funktionsweise-MXD-konverter.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <metadata + id="metadata261"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + inkscape:window-height="937" + inkscape:window-width="1646" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + guidetolerance="10.0" + gridtolerance="10.0" + objecttolerance="10.0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#ffffff" + id="base" + showgrid="false" + inkscape:zoom="1.3866188" + inkscape:cx="472.008" + inkscape:cy="-60.67088" + inkscape:window-x="26" + inkscape:window-y="51" + inkscape:current-layer="layer1" /> + <defs + id="defs4"> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="408.298" + x2="201.633" + y1="408.298" + x1="270.62" + id="1"> + <stop + id="stop83" + style="stop-color:#c3c3c3" + offset="0" /> + <stop + id="stop85" + style="stop-color:#ffffff" + offset="0.205" /> + <stop + id="stop87" + style="stop-color:#ffffff" + offset="0.495" /> + <stop + id="stop89" + style="stop-color:#b4b4b4" + offset="1" /> + </linearGradient> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="408.298" + x2="259.418" + y1="408.298" + x1="328.405" + id="2"> + <stop + id="stop104" + style="stop-color:#c3c3c3" + offset="0" /> + <stop + id="stop106" + style="stop-color:#ffffff" + offset="0.205" /> + <stop + id="stop108" + style="stop-color:#ffffff" + offset="0.495" /> + <stop + id="stop110" + style="stop-color:#b4b4b4" + offset="1" /> + </linearGradient> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="408.298" + x2="317.203" + y1="408.298" + x1="386.19" + id="3"> + <stop + id="stop125" + style="stop-color:#c3c3c3" + offset="0" /> + <stop + id="stop127" + style="stop-color:#ffffff" + offset="0.205" /> + <stop + id="stop129" + style="stop-color:#ffffff" + offset="0.495" /> + <stop + id="stop131" + style="stop-color:#b4b4b4" + offset="1" /> + </linearGradient> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="321.599" + x2="144.758" + y1="321.599" + x1="445.62" + id="4"> + <stop + id="stop144" + style="stop-color:#c3c3c3" + offset="0" /> + <stop + id="stop146" + style="stop-color:#ffffff" + offset="0.205" /> + <stop + id="stop148" + style="stop-color:#ffffff" + offset="0.495" /> + <stop + id="stop150" + style="stop-color:#b4b4b4" + offset="1" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 240.9445 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="545.66901 : 240.9445 : 1" + inkscape:persp3d-origin="272.8345 : 160.62967 : 1" + id="perspective263" /> + <marker + id="ArrowEnd" + viewBox="0 0 10 10" + refX="0" + refY="5" + markerUnits="strokeWidth" + markerWidth="4" + markerHeight="3" + orient="auto"> + <path + d="M 0 0 L 10 5 L 0 10 z" + id="path7" /> + </marker> + <marker + id="ArrowStart" + viewBox="0 0 10 10" + refX="10" + refY="5" + markerUnits="strokeWidth" + markerWidth="4" + markerHeight="3" + orient="auto"> + <path + d="M 10 0 L 0 5 L 10 10 z" + id="path10" /> + </marker> + <linearGradient + inkscape:collect="always" + xlink:href="#1" + id="linearGradient3001" + gradientUnits="userSpaceOnUse" + x1="270.62" + y1="408.298" + x2="201.633" + y2="408.298" /> + <linearGradient + inkscape:collect="always" + xlink:href="#2" + id="linearGradient3003" + gradientUnits="userSpaceOnUse" + x1="328.405" + y1="408.298" + x2="259.418" + y2="408.298" /> + <linearGradient + inkscape:collect="always" + xlink:href="#3" + id="linearGradient3005" + gradientUnits="userSpaceOnUse" + x1="386.19" + y1="408.298" + x2="317.203" + y2="408.298" /> + <linearGradient + inkscape:collect="always" + xlink:href="#4" + id="linearGradient3007" + gradientUnits="userSpaceOnUse" + x1="445.62" + y1="321.599" + x2="144.758" + y2="321.599" /> + <inkscape:perspective + id="perspective3922" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective3989" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4094" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4144" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4285" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <g + inkscape:groupmode="layer" + id="layer1" + inkscape:label="hintergrund" + style="display:inline"> + <path + id="path14" + d="M 105.40238,-0.99976997 L 522.70156,-0.99976997 L 522.70156,496.75517 L 105.40238,496.75517 L 105.40238,-0.99976997 z" + style="fill:#e5e5e5;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <g + id="g22" + transform="translate(-22.4177,460.59473)"> + <path + id="path24" + d="M 490.345,9.591 C 492.323,10.475 495.093,10.487 496.973,9.19501 C 497.686,8.70502 498.372,8.07202 498.372,7.18201 C 498.578,7.18298 498.712,7.54199 498.903,7.46497 C 499.556,7.20599 500.272,7.39398 500.77,7.62598 C 501.014,7.73999 501.242,7.19098 501.511,7.19098 C 501.622,7.51697 502.433,8.44098 502.433,8.48999 C 504.592,10.452 508.474,11.372 511.216,10.741 C 512.078,10.543 519.465,7.88397 519.465,7.14301 C 519.932,7.28198 520.239,7.55103 520.998,7.56799 L 522.405,7.19098 C 523.622,6.974 523.553,7.24097 524.127,7.26599 C 524.127,9.34302 523.202,12.088 524.147,14.114 C 524.24,14.314 524.524,14.734 524.671,14.883 C 528.562,18.816 534.607,17.258 539.065,15.378 C 539.065,15.509 539.321,15.664 539.321,15.795 C 539.321,15.977 539.065,16.136 539.065,16.318 C 538.718,16.318 538.491,16.445 538.202,16.655 C 535.968,18.275 533.024,19.427 530.953,21.363 C 530.748,21.554 530.755,21.758 530.755,22.055 C 530.953,22.303 531.233,22.673 531.512,22.866 C 531.596,22.924 531.761,23.031 533.646,24.05 C 535.212,24.896 536.877,25.27 538.391,25.267 C 538.391,25.452 538.243,25.642 538.248,25.846 C 538.249,25.897 538.263,25.953 538.283,26.01 C 538.303,26.067 538.329,26.127 538.355,26.186 C 538.38,26.245 538.406,26.305 538.424,26.361 C 538.442,26.418 538.452,26.473 538.449,26.523 C 538.435,26.765 538.348,26.946 538.273,27.15 C 535.947,25.986 533.408,24.919 530.808,24.182 C 529.429,23.791 528.073,23.433 526.698,23.14 C 525.502,22.885 523.178,22.636 522.495,24.182 C 521.775,25.811 522.526,27.482 522.741,29.065 C 522.442,28.928 522.237,28.311 522.023,28.598 L 521.753,29.128 C 521.407,28.386 521.105,27.39 520.895,26.552 C 520.61,25.411 520.049,24.663 518.67,24.467 C 516.52,24.162 516.738,24.402 516.005,24.829 C 514.686,25.596 513.644,27.28 513.624,29.164 C 513.3,29.111 513.237,28.824 512.912,28.771 C 512.858,28.791 512.791,28.827 512.718,28.865 C 512.645,28.902 512.565,28.942 512.485,28.97 C 512.406,28.997 512.326,29.012 512.253,29.002 C 512.18,28.991 512.113,28.955 512.059,28.878 C 512.011,28.665 511.71,28.48 511.362,28.732 L 510.426,29.128 C 510.305,28.815 509.779,28.589 509.513,28.423 C 508.263,27.646 506.25,28.398 505.475,29.417 C 505.29,29.357 505.105,29.297 504.92,29.238 C 504.726,29.137 504.454,29.017 504.009,29.295 L 503.689,29.347 C 503.689,29.09 504.138,29.071 504.297,28.818 C 504.676,28.212 505.053,27.367 505.631,26.691 C 506.621,25.534 507.574,24.173 506.833,22.669 C 506.612,22.223 506.773,22.419 505.872,21.633 C 505.339,21.167 504.557,20.579 503.915,20.28 C 501.117,18.981 497.653,18.834 494.369,19.259 C 492.658,19.48 490.98,19.737 489.504,20.324 C 489.458,20.342 489.5,20.415 489.451,20.415 C 489.503,20.234 489.833,19.981 489.653,19.878 C 489.432,19.788 489.445,19.639 489.452,19.444 L 489.47,19.13 C 489.619,19.13 489.505,19.103 489.653,19.088 C 491.83,18.856 493.749,18.172 495.786,17.455 C 496.42,17.232 497.184,16.925 497.724,16.475 C 498.074,16.183 498.519,15.706 498.519,15.26 C 498.519,14.865 498.092,13.968 497.814,13.746 C 495.618,11.989 490.082,11.054 490.032,10.985 L 489.98,10.914 C 489.983,10.817 490.248,10.754 490.317,10.57 C 490.37,10.427 490.248,10.141 490.299,10.004 C 490.39,9.75897 490.422,9.591 490.345,9.591 z" + style="fill:#e5e5e5;fill-rule:evenodd;stroke:#e5e5e5;stroke-width:0.215433" /> + <path + id="path26" + d="M 517.4,15.724 C 516.856,15.774 515.867,15.971 515.57,16.416 C 515.521,16.416 515.471,16.466 515.471,16.515 C 515.323,16.565 515.224,16.961 515.026,17.06 C 515.026,17.801 514.73,18.444 515.323,19.088 L 515.422,19.186 L 515.62,19.236 C 517.104,20.027 518.538,19.928 519.923,19.038 L 519.973,18.939 C 520.072,18.89 520.269,18.593 520.467,18.593 C 520.467,18.049 520.962,17.505 520.615,16.812 C 520.517,16.614 520.022,16.466 520.022,16.268 C 519.923,16.268 519.329,15.922 519.329,15.872 L 519.132,15.872 C 518.934,15.675 517.598,15.675 517.4,15.724 z" + style="fill:#cccccc;fill-rule:evenodd;stroke:#b2b2b2;stroke-width:0.85039401" /> + <path + id="path28" + d="M 538.415,25.32 C 535.942,25.023 532.833,24.232 531.002,22.402 C 530.854,22.253 530.656,21.907 530.656,21.659 L 530.755,21.61 C 530.755,21.56 530.954,21.364 531.002,21.313 C 532.332,19.931 534.325,19.27 535.87,18.171 C 537.244,17.195 538.624,16.416 538.867,16.416 C 538.972,16.364 539.23,16.312 539.312,16.268 M 538.306,27.11 C 536.624,26.615 535.109,25.564 533.426,25.023 L 530.739,24.159 C 529.725,23.832 528.707,23.526 527.72,23.367 C 525.938,23.081 524.426,22.304 522.94,23.638 C 522.002,24.48 522.203,25.27 522.203,26.507 C 522.318,27.018 522.766,28.643 522.766,29.138 M 521.737,29.125 C 521.094,27.839 521.057,25.687 519.782,24.781 C 519.178,24.351 517.109,24.246 516.411,24.479 C 515.921,24.642 515.57,25.171 515.224,25.518 C 514.284,26.457 513.628,27.891 513.628,29.226 M 510.584,29.206 C 509.632,27.935 507.443,27.497 506.222,28.786 C 506.077,28.92 505.802,29.15 505.289,29.539 M 503.785,29.268 C 504.528,28.922 504.819,28.106 505.158,27.41 C 505.758,26.177 507.768,24.291 506.857,22.81 L 506.549,22.309 C 506.26,21.803 505.033,20.925 504.904,20.796 C 504.706,20.598 504.186,20.391 503.947,20.275 C 499.932,18.314 495.44,18.992 491.235,19.78 C 490.692,19.882 489.933,20.431 489.389,20.431 M 490.052,10.94 C 490.646,11.088 491.14,11.308 491.73,11.471 C 493.119,11.852 494.891,12.073 496.181,12.756 C 496.573,12.963 497.022,13.35 497.418,13.548 C 498.16,13.894 498.506,14.685 498.457,15.526 C 498.457,15.724 498.056,16.165 497.913,16.318 C 497.265,17.006 495.881,17.445 494.994,17.752 C 493.309,18.335 491.334,19.186 489.504,19.186 L 489.455,19.236 M 490.454,9.625 C 490.984,9.896 491.068,9.81598 491.498,9.99402 C 492.992,10.612 494.998,9.995 496.38,9.39301 C 497.32,8.98297 498.409,8.18298 498.409,7.086 M 501.473,7.224 C 502.165,8.263 502.954,9.10498 504.096,9.64001 C 504.536,9.84698 505.187,10.217 505.678,10.333 C 507.71,10.811 509.43,11.136 511.515,10.728 C 511.708,10.69 511.777,10.699 512.306,10.531 C 514.45,9.849 516.875,8.698 518.835,7.612 C 518.894,7.58002 519.533,7.11401 519.549,7.11401 M 524.127,7.19202 C 524.012,8.17297 523.806,8.96399 523.807,9.5 C 523.808,11.063 523.524,12.119 523.831,13.3 C 524.395,15.477 527.655,17.063 529.172,17.208 C 532.375,17.513 535.355,16.631 538.273,15.576 C 538.32,15.559 538.471,15.526 538.57,15.526 C 538.62,15.427 539.015,15.279 539.164,15.279" + style="fill:none;stroke:#cccccc;stroke-width:0.85039401;stroke-linecap:round;stroke-linejoin:round" /> + <path + id="path30" + d="M 490.822,12.951 L 491.867,12.951 L 491.867,20.662 L 490.822,20.662 L 490.822,12.951 z M 493.242,17.46 C 493.242,17.167 493.293,16.89 493.396,16.63 C 493.499,16.37 493.653,16.126 493.858,15.899 C 494.071,15.679 494.32,15.512 494.606,15.398 C 494.892,15.284 495.218,15.228 495.585,15.228 C 495.644,15.228 495.708,15.231 495.778,15.239 C 495.847,15.246 495.922,15.257 496.003,15.272 C 496.084,15.286 496.166,15.304 496.251,15.327 C 496.335,15.349 496.421,15.378 496.509,15.415 C 496.663,15.48 496.81,15.565 496.949,15.668 C 497.088,15.77 497.224,15.895 497.356,16.041 C 497.488,16.181 497.587,16.353 497.653,16.558 C 497.719,16.764 497.752,16.999 497.752,17.263 C 497.752,17.27 497.752,17.279 497.752,17.29 C 497.752,17.301 497.752,17.314 497.752,17.329 C 497.752,17.336 497.752,17.345 497.752,17.356 C 497.752,17.367 497.752,17.38 497.752,17.395 L 497.752,20.662 L 496.707,20.662 L 496.707,17.549 C 496.707,17.387 496.683,17.228 496.635,17.07 C 496.588,16.913 496.516,16.764 496.421,16.625 C 496.326,16.478 496.201,16.368 496.047,16.295 C 495.893,16.221 495.71,16.185 495.497,16.185 C 495.299,16.185 495.125,16.217 494.974,16.283 C 494.824,16.35 494.694,16.448 494.584,16.581 C 494.474,16.713 494.388,16.854 494.326,17.004 C 494.263,17.154 494.221,17.314 494.199,17.483 L 494.199,20.662 L 493.242,20.662 L 493.242,17.46 z M 498.874,14.084 L 499.908,14.084 L 499.908,15.382 L 501.91,15.382 L 501.91,16.327 L 499.908,16.327 L 499.908,19.012 C 499.908,19.114 499.915,19.206 499.93,19.287 C 499.945,19.367 499.967,19.444 499.996,19.518 C 500.025,19.591 500.089,19.644 500.189,19.677 C 500.287,19.71 500.425,19.726 500.601,19.726 L 501.822,19.705 L 501.822,20.662 L 500.524,20.662 C 500.517,20.662 500.509,20.662 500.502,20.662 C 500.495,20.662 500.487,20.662 500.48,20.662 C 500.473,20.662 500.467,20.662 500.463,20.662 C 500.46,20.662 500.454,20.665 500.447,20.673 C 500.44,20.673 500.432,20.673 500.425,20.673 C 500.418,20.673 500.41,20.673 500.403,20.673 C 500.396,20.673 500.39,20.673 500.387,20.673 C 500.383,20.673 500.377,20.673 500.37,20.673 C 500.121,20.673 499.904,20.636 499.721,20.563 C 499.538,20.489 499.387,20.376 499.27,20.222 C 499.153,20.067 499.063,19.902 499,19.726 C 498.938,19.551 498.9,19.367 498.885,19.177 C 498.878,19.162 498.874,19.145 498.874,19.127 C 498.874,19.109 498.874,19.089 498.874,19.067 C 498.874,19.052 498.874,19.035 498.874,19.017 C 498.874,18.999 498.874,18.979 498.874,18.957 L 498.874,18.934 L 498.874,14.084 z M 505.98,16.768 C 505.966,16.76 505.951,16.751 505.936,16.74 C 505.921,16.729 505.907,16.713 505.892,16.691 C 505.877,16.676 505.861,16.658 505.843,16.636 C 505.824,16.613 505.804,16.592 505.782,16.57 C 505.76,16.555 505.736,16.538 505.711,16.52 C 505.685,16.502 505.661,16.482 505.639,16.46 C 505.61,16.445 505.581,16.428 505.551,16.41 C 505.522,16.392 505.489,16.375 505.452,16.361 C 505.379,16.324 505.292,16.298 505.194,16.283 C 505.095,16.269 504.983,16.262 504.858,16.262 C 504.572,16.262 504.321,16.313 504.104,16.416 C 503.888,16.518 503.707,16.668 503.56,16.867 C 503.413,17.064 503.304,17.274 503.23,17.494 C 503.157,17.714 503.12,17.941 503.12,18.176 C 503.12,18.183 503.12,18.19 503.12,18.197 L 503.12,18.209 C 503.12,18.421 503.159,18.625 503.236,18.819 C 503.312,19.014 503.425,19.199 503.571,19.375 C 503.718,19.551 503.899,19.683 504.116,19.771 C 504.332,19.859 504.579,19.902 504.858,19.902 C 505.159,19.902 505.41,19.868 505.612,19.798 C 505.813,19.728 505.966,19.624 506.068,19.485 C 506.171,19.338 506.264,19.165 506.349,18.968 C 506.433,18.769 506.508,18.546 506.574,18.297 L 506.574,18.286 L 506.585,18.275 L 506.585,18.263 L 507.542,18.318 C 507.542,18.333 507.542,18.346 507.542,18.357 C 507.542,18.368 507.546,18.377 507.553,18.385 C 507.553,18.399 507.553,18.41 507.553,18.418 C 507.553,18.425 507.553,18.436 507.553,18.451 C 507.553,18.458 507.553,18.467 507.553,18.478 C 507.553,18.489 507.557,18.498 507.564,18.506 C 507.564,18.52 507.564,18.531 507.564,18.538 C 507.564,18.546 507.564,18.553 507.564,18.561 C 507.564,18.619 507.56,18.68 507.553,18.742 C 507.546,18.804 507.535,18.869 507.52,18.934 C 507.513,18.964 507.504,18.997 507.492,19.034 C 507.482,19.07 507.472,19.103 507.465,19.133 C 507.451,19.169 507.437,19.204 507.427,19.237 C 507.416,19.27 507.403,19.305 507.388,19.342 C 507.3,19.525 507.183,19.705 507.036,19.881 C 506.89,20.057 506.71,20.222 506.497,20.376 C 506.292,20.53 506.052,20.645 505.777,20.722 C 505.502,20.799 505.196,20.838 504.858,20.838 C 504.469,20.838 504.11,20.777 503.78,20.656 C 503.45,20.535 503.153,20.35 502.889,20.101 C 502.618,19.844 502.416,19.556 502.284,19.237 C 502.152,18.918 502.086,18.564 502.086,18.176 C 502.086,17.765 502.141,17.402 502.251,17.087 C 502.361,16.771 502.526,16.5 502.746,16.272 C 502.966,16.045 503.197,15.858 503.439,15.711 C 503.681,15.565 503.934,15.459 504.198,15.393 C 504.228,15.385 504.255,15.38 504.281,15.376 C 504.306,15.372 504.334,15.367 504.363,15.36 C 504.393,15.36 504.42,15.358 504.446,15.354 C 504.471,15.35 504.499,15.345 504.528,15.338 C 504.587,15.33 504.644,15.325 504.699,15.321 C 504.754,15.317 504.807,15.315 504.858,15.315 C 505.159,15.315 505.439,15.358 505.7,15.442 C 505.96,15.526 506.2,15.653 506.42,15.821 C 506.633,15.99 506.825,16.177 506.998,16.382 C 507.17,16.588 507.322,16.808 507.454,17.043 L 503.813,19.012 L 503.384,18.242 L 505.98,16.768 z M 508.84,15.382 L 510.479,19.54 L 511.953,15.382 L 513.086,15.382 L 511.26,20.145 C 511.216,20.255 511.166,20.348 511.111,20.425 C 511.056,20.502 510.996,20.566 510.93,20.618 C 510.864,20.662 510.796,20.698 510.727,20.728 C 510.657,20.757 510.582,20.775 510.501,20.783 C 510.494,20.783 510.488,20.783 510.484,20.783 C 510.481,20.783 510.475,20.783 510.468,20.783 C 510.461,20.783 510.453,20.783 510.446,20.783 C 510.365,20.783 510.287,20.772 510.209,20.749 C 510.132,20.728 510.054,20.694 509.973,20.651 C 509.9,20.592 509.834,20.524 509.775,20.447 C 509.716,20.37 509.665,20.277 509.621,20.167 L 507.707,15.382 L 508.84,15.382 z M 517.585,17.626 C 517.585,17.464 517.554,17.305 517.491,17.147 C 517.429,16.989 517.336,16.841 517.211,16.702 C 517.086,16.555 516.91,16.445 516.683,16.372 C 516.456,16.298 516.181,16.262 515.858,16.262 C 515.806,16.262 515.753,16.265 515.698,16.272 C 515.644,16.28 515.583,16.291 515.517,16.306 C 515.451,16.313 515.385,16.327 515.319,16.35 C 515.253,16.372 515.187,16.401 515.121,16.437 C 515.004,16.489 514.89,16.56 514.78,16.652 C 514.67,16.744 514.564,16.852 514.461,16.977 C 514.366,17.094 514.289,17.239 514.23,17.411 C 514.171,17.583 514.135,17.78 514.12,18 C 514.12,18.293 514.16,18.548 514.241,18.764 C 514.322,18.98 514.442,19.162 514.604,19.309 C 514.773,19.448 514.947,19.56 515.126,19.644 C 515.306,19.728 515.495,19.782 515.693,19.804 C 515.7,19.804 515.71,19.804 515.72,19.804 C 515.731,19.804 515.741,19.804 515.748,19.804 C 515.763,19.811 515.775,19.815 515.786,19.815 C 515.797,19.815 515.806,19.815 515.814,19.815 C 515.829,19.815 515.84,19.815 515.847,19.815 C 515.854,19.815 515.865,19.815 515.88,19.815 C 515.887,19.815 515.896,19.815 515.907,19.815 C 515.918,19.815 515.928,19.815 515.935,19.815 C 516.023,19.815 516.106,19.809 516.182,19.798 C 516.259,19.787 516.335,19.767 516.408,19.738 C 516.445,19.723 516.479,19.708 516.512,19.694 C 516.545,19.679 516.58,19.664 516.617,19.65 C 516.646,19.628 516.679,19.606 516.716,19.584 C 516.753,19.561 516.786,19.536 516.815,19.506 C 516.852,19.485 516.886,19.457 516.919,19.424 C 516.953,19.391 516.987,19.36 517.024,19.33 C 517.061,19.294 517.097,19.259 517.134,19.226 C 517.171,19.193 517.207,19.158 517.244,19.122 L 517.244,20.321 C 517.237,20.335 517.229,20.346 517.222,20.353 L 517.222,20.365 C 517.134,20.423 517.042,20.477 516.947,20.524 C 516.852,20.572 516.753,20.614 516.65,20.651 C 516.547,20.68 516.422,20.704 516.276,20.722 C 516.129,20.74 515.961,20.749 515.77,20.749 C 515.763,20.749 515.757,20.749 515.753,20.749 C 515.75,20.749 515.744,20.749 515.737,20.749 C 515.73,20.749 515.719,20.749 515.704,20.749 C 515.697,20.749 515.689,20.749 515.682,20.749 C 515.675,20.749 515.667,20.749 515.66,20.749 C 515.653,20.749 515.647,20.749 515.644,20.749 C 515.64,20.749 515.634,20.749 515.627,20.749 C 515.289,20.749 514.976,20.689 514.687,20.568 C 514.397,20.447 514.131,20.262 513.889,20.012 C 513.647,19.756 513.465,19.461 513.344,19.127 C 513.223,18.793 513.163,18.418 513.163,18 C 513.163,17.633 513.222,17.292 513.339,16.977 C 513.456,16.661 513.632,16.372 513.867,16.107 C 514.101,15.844 514.391,15.645 514.736,15.514 C 515.081,15.382 515.48,15.315 515.935,15.315 C 516.367,15.315 516.753,15.374 517.09,15.491 C 517.427,15.609 517.71,15.785 517.937,16.02 C 518.172,16.254 518.346,16.502 518.459,16.762 C 518.573,17.022 518.63,17.292 518.63,17.571 L 518.63,20.662 L 517.585,20.662 L 517.585,17.626 z M 519.664,14.084 L 520.698,14.084 L 520.698,15.382 L 522.7,15.382 L 522.7,16.327 L 520.698,16.327 L 520.698,19.012 C 520.698,19.114 520.705,19.206 520.72,19.287 C 520.735,19.367 520.757,19.444 520.786,19.518 C 520.815,19.591 520.88,19.644 520.979,19.677 C 521.078,19.71 521.215,19.726 521.391,19.726 L 522.612,19.705 L 522.612,20.662 L 521.314,20.662 C 521.307,20.662 521.299,20.662 521.292,20.662 C 521.285,20.662 521.277,20.662 521.27,20.662 C 521.263,20.662 521.257,20.662 521.254,20.662 C 521.25,20.662 521.244,20.665 521.237,20.673 C 521.23,20.673 521.222,20.673 521.215,20.673 C 521.208,20.673 521.201,20.673 521.193,20.673 C 521.186,20.673 521.18,20.673 521.177,20.673 C 521.173,20.673 521.167,20.673 521.16,20.673 C 520.911,20.673 520.695,20.636 520.511,20.563 C 520.328,20.489 520.178,20.376 520.06,20.222 C 519.943,20.067 519.853,19.902 519.791,19.726 C 519.728,19.551 519.69,19.367 519.675,19.177 C 519.668,19.162 519.664,19.145 519.664,19.127 C 519.664,19.109 519.664,19.089 519.664,19.067 C 519.664,19.052 519.664,19.035 519.664,19.017 C 519.664,18.999 519.664,18.979 519.664,18.957 L 519.664,18.934 L 519.664,14.084 z M 523.646,15.382 L 524.603,15.382 L 524.603,20.662 L 523.646,20.662 L 523.646,15.382 z M 523.569,14.161 C 523.569,14.08 523.584,14.005 523.613,13.935 C 523.643,13.865 523.69,13.805 523.756,13.754 C 523.815,13.71 523.879,13.675 523.949,13.649 C 524.018,13.623 524.09,13.61 524.163,13.61 C 524.244,13.61 524.317,13.621 524.383,13.644 C 524.449,13.665 524.515,13.702 524.581,13.754 C 524.647,13.805 524.697,13.865 524.73,13.935 C 524.763,14.005 524.779,14.087 524.779,14.182 C 524.779,14.278 524.763,14.362 524.73,14.436 C 524.697,14.509 524.651,14.571 524.592,14.623 C 524.526,14.674 524.46,14.711 524.394,14.733 C 524.328,14.754 524.259,14.766 524.185,14.766 C 524.112,14.773 524.039,14.766 523.965,14.743 C 523.892,14.722 523.822,14.685 523.756,14.633 C 523.69,14.582 523.643,14.518 523.613,14.441 C 523.584,14.364 523.569,14.278 523.569,14.182 L 523.569,14.161 z M 525.989,17.89 C 525.989,17.486 526.059,17.123 526.198,16.801 C 526.337,16.478 526.543,16.196 526.814,15.954 C 527.093,15.711 527.388,15.53 527.7,15.409 C 528.011,15.288 528.34,15.228 528.684,15.228 C 528.699,15.228 528.715,15.228 528.734,15.228 C 528.752,15.228 528.768,15.228 528.783,15.228 C 528.798,15.235 528.814,15.239 528.833,15.239 C 528.851,15.239 528.871,15.239 528.893,15.239 C 528.908,15.239 528.924,15.239 528.943,15.239 C 528.961,15.239 528.981,15.239 529.003,15.239 C 529.018,15.246 529.034,15.249 529.053,15.249 C 529.071,15.249 529.087,15.249 529.102,15.249 C 529.396,15.294 529.676,15.38 529.944,15.508 C 530.211,15.636 530.47,15.807 530.719,16.02 C 530.961,16.24 531.144,16.515 531.269,16.844 C 531.394,17.174 531.456,17.56 531.456,18 C 531.456,18.029 531.456,18.058 531.456,18.087 C 531.456,18.117 531.453,18.142 531.445,18.165 C 531.445,18.194 531.443,18.223 531.44,18.252 C 531.436,18.282 531.434,18.311 531.434,18.341 C 531.427,18.399 531.418,18.458 531.407,18.517 C 531.396,18.575 531.383,18.634 531.368,18.693 C 531.302,18.957 531.201,19.208 531.066,19.446 C 530.93,19.685 530.756,19.91 530.543,20.123 C 530.338,20.335 530.092,20.493 529.806,20.596 C 529.52,20.698 529.201,20.749 528.849,20.749 C 528.35,20.749 527.92,20.682 527.557,20.546 C 527.194,20.41 526.898,20.203 526.671,19.925 C 526.444,19.646 526.273,19.338 526.159,19.001 C 526.046,18.663 525.989,18.3 525.989,17.912 L 525.989,17.89 z M 527.034,17.89 C 527.034,17.948 527.034,18.001 527.034,18.049 C 527.034,18.097 527.038,18.146 527.045,18.197 C 527.052,18.249 527.062,18.298 527.073,18.346 C 527.084,18.394 527.093,18.443 527.1,18.495 C 527.137,18.656 527.196,18.814 527.276,18.968 C 527.357,19.122 527.456,19.268 527.573,19.408 C 527.698,19.547 527.852,19.65 528.035,19.716 C 528.219,19.782 528.435,19.815 528.684,19.815 C 528.919,19.815 529.139,19.782 529.344,19.716 C 529.549,19.65 529.737,19.551 529.905,19.419 C 530.074,19.287 530.2,19.094 530.285,18.841 C 530.369,18.588 530.411,18.278 530.411,17.912 C 530.411,17.655 530.375,17.422 530.301,17.213 C 530.228,17.004 530.118,16.819 529.971,16.658 C 529.824,16.503 529.643,16.386 529.427,16.306 C 529.21,16.225 528.963,16.185 528.684,16.185 C 528.42,16.185 528.193,16.219 528.002,16.289 C 527.812,16.359 527.654,16.467 527.529,16.613 C 527.404,16.753 527.304,16.903 527.227,17.064 C 527.15,17.226 527.096,17.391 527.067,17.56 C 527.06,17.589 527.052,17.618 527.045,17.648 C 527.038,17.677 527.034,17.706 527.034,17.736 C 527.034,17.765 527.034,17.794 527.034,17.824 C 527.034,17.853 527.034,17.882 527.034,17.912 L 527.034,17.89 z M 532.402,17.46 C 532.402,17.167 532.454,16.89 532.556,16.63 C 532.659,16.37 532.813,16.126 533.018,15.899 C 533.231,15.679 533.48,15.512 533.766,15.398 C 534.052,15.284 534.379,15.228 534.745,15.228 C 534.804,15.228 534.868,15.231 534.938,15.239 C 535.008,15.246 535.083,15.257 535.163,15.272 C 535.244,15.286 535.326,15.304 535.411,15.327 C 535.495,15.349 535.581,15.378 535.669,15.415 C 535.823,15.48 535.97,15.565 536.109,15.668 C 536.249,15.77 536.384,15.895 536.516,16.041 C 536.648,16.181 536.747,16.353 536.813,16.558 C 536.879,16.764 536.912,16.999 536.912,17.263 C 536.912,17.27 536.912,17.279 536.912,17.29 C 536.912,17.301 536.912,17.314 536.912,17.329 C 536.912,17.336 536.912,17.345 536.912,17.356 C 536.912,17.367 536.912,17.38 536.912,17.395 L 536.912,20.662 L 535.867,20.662 L 535.867,17.549 C 535.867,17.387 535.843,17.228 535.796,17.07 C 535.748,16.913 535.677,16.764 535.581,16.625 C 535.486,16.478 535.361,16.368 535.207,16.295 C 535.053,16.221 534.87,16.185 534.657,16.185 C 534.459,16.185 534.285,16.217 534.135,16.283 C 533.985,16.35 533.854,16.448 533.744,16.581 C 533.634,16.713 533.548,16.854 533.486,17.004 C 533.424,17.154 533.381,17.314 533.359,17.483 L 533.359,20.662 L 532.402,20.662 L 532.402,17.46 z" + style="fill:#000000;fill-rule:evenodd;stroke:none" /> + <path + id="path32" + d="M 522.369,23.584 C 522.369,23.322 522.405,23.087 522.476,22.88 C 522.547,22.672 522.652,22.492 522.79,22.338 C 522.933,22.185 523.08,22.054 523.234,21.945 C 523.387,21.837 523.548,21.753 523.716,21.693 C 523.746,21.682 523.777,21.671 523.809,21.662 C 523.841,21.653 523.873,21.642 523.907,21.631 C 523.937,21.624 523.968,21.616 524,21.609 C 524.032,21.601 524.062,21.596 524.092,21.592 C 524.156,21.581 524.217,21.572 524.275,21.566 C 524.333,21.561 524.39,21.558 524.446,21.558 C 524.599,21.558 524.747,21.573 524.889,21.603 C 525.032,21.633 525.166,21.676 525.293,21.732 C 525.42,21.788 525.546,21.861 525.669,21.951 C 525.793,22.041 525.915,22.146 526.034,22.265 L 525.681,22.653 C 525.666,22.645 525.651,22.636 525.638,22.625 C 525.625,22.613 525.611,22.6 525.597,22.585 C 525.589,22.578 525.581,22.57 525.574,22.563 C 525.566,22.555 525.559,22.548 525.551,22.54 C 525.54,22.533 525.531,22.525 525.523,22.518 C 525.516,22.51 525.508,22.503 525.501,22.495 C 525.434,22.439 525.361,22.386 525.282,22.335 C 525.204,22.285 525.119,22.235 525.03,22.187 C 524.94,22.142 524.846,22.107 524.749,22.083 C 524.652,22.059 524.551,22.046 524.446,22.046 C 524.218,22.046 524.016,22.079 523.842,22.145 C 523.669,22.21 523.522,22.308 523.402,22.439 C 523.286,22.566 523.192,22.702 523.118,22.846 C 523.046,22.99 522.996,23.141 522.97,23.298 C 522.966,23.324 522.961,23.349 522.956,23.374 C 522.95,23.398 522.947,23.423 522.947,23.449 C 522.944,23.476 522.942,23.501 522.942,23.525 C 522.942,23.55 522.942,23.573 522.942,23.595 C 522.942,23.783 522.973,23.963 523.034,24.137 C 523.096,24.311 523.189,24.476 523.312,24.634 C 523.436,24.791 523.592,24.912 523.781,24.996 C 523.97,25.08 524.191,25.128 524.446,25.139 C 524.45,25.139 524.452,25.139 524.454,25.139 C 524.456,25.139 524.459,25.139 524.463,25.139 C 524.466,25.139 524.47,25.139 524.474,25.139 C 524.478,25.139 524.481,25.139 524.485,25.139 C 524.493,25.139 524.498,25.139 524.502,25.139 C 524.506,25.139 524.509,25.139 524.51,25.139 C 524.512,25.139 524.515,25.139 524.519,25.139 C 524.687,25.143 524.841,25.12 524.979,25.071 C 525.117,25.023 525.239,24.948 525.344,24.847 C 525.452,24.75 525.543,24.646 525.616,24.535 C 525.689,24.425 525.746,24.31 525.787,24.19 C 525.798,24.16 525.809,24.131 525.818,24.103 C 525.828,24.075 525.834,24.048 525.838,24.022 C 525.841,24.007 525.844,23.993 525.846,23.98 C 525.848,23.967 525.849,23.953 525.849,23.938 C 525.853,23.927 525.856,23.914 525.857,23.901 C 525.859,23.888 525.86,23.874 525.86,23.859 L 524.491,23.848 L 524.491,23.315 L 526.433,23.315 L 526.433,23.803 C 526.41,24.099 526.345,24.358 526.236,24.58 C 526.128,24.803 525.978,24.993 525.787,25.15 C 525.593,25.307 525.384,25.424 525.161,25.501 C 524.939,25.577 524.7,25.616 524.446,25.616 C 524.147,25.616 523.873,25.57 523.626,25.478 C 523.38,25.387 523.161,25.246 522.97,25.054 C 522.779,24.868 522.633,24.651 522.532,24.406 C 522.431,24.161 522.377,23.891 522.369,23.595 L 522.369,23.584 z M 526.921,23.713 C 526.921,23.597 526.943,23.488 526.988,23.385 C 527.033,23.282 527.102,23.188 527.196,23.101 C 527.289,23.015 527.398,22.951 527.521,22.908 C 527.645,22.865 527.783,22.843 527.937,22.843 C 528.045,22.843 528.141,22.852 528.223,22.869 C 528.305,22.885 528.372,22.909 528.425,22.939 C 528.477,22.969 528.526,23.005 528.571,23.048 C 528.616,23.091 528.655,23.141 528.689,23.197 C 528.722,23.152 528.764,23.11 528.812,23.071 C 528.861,23.031 528.919,22.993 528.986,22.956 C 529.054,22.918 529.128,22.89 529.211,22.871 C 529.293,22.853 529.385,22.843 529.486,22.843 C 529.613,22.843 529.733,22.861 529.845,22.897 C 529.957,22.932 530.062,22.987 530.159,23.062 C 530.256,23.133 530.33,23.215 530.381,23.306 C 530.431,23.398 530.458,23.5 530.462,23.612 C 530.462,23.616 530.462,23.619 530.462,23.621 C 530.462,23.622 530.462,23.625 530.462,23.629 C 530.462,23.633 530.462,23.636 530.462,23.637 C 530.462,23.639 530.462,23.642 530.462,23.646 C 530.458,23.65 530.457,23.652 530.457,23.654 C 530.457,23.656 530.457,23.659 530.457,23.663 C 530.457,23.667 530.457,23.669 530.457,23.671 C 530.457,23.673 530.457,23.676 530.457,23.68 L 530.457,25.571 L 529.968,25.571 L 529.968,23.848 C 529.968,23.852 529.968,23.853 529.968,23.851 C 529.968,23.849 529.97,23.848 529.974,23.848 C 529.974,23.844 529.974,23.842 529.974,23.84 C 529.974,23.838 529.974,23.835 529.974,23.831 C 529.974,23.824 529.974,23.817 529.974,23.811 C 529.974,23.806 529.974,23.801 529.974,23.798 C 529.974,23.786 529.973,23.775 529.971,23.764 C 529.969,23.753 529.966,23.739 529.963,23.724 C 529.959,23.713 529.956,23.701 529.954,23.688 C 529.953,23.675 529.95,23.661 529.946,23.646 C 529.931,23.601 529.909,23.558 529.879,23.517 C 529.848,23.476 529.813,23.436 529.772,23.399 C 529.731,23.362 529.686,23.334 529.637,23.315 C 529.589,23.296 529.538,23.287 529.486,23.287 C 529.418,23.287 529.356,23.299 529.298,23.323 C 529.24,23.347 529.186,23.384 529.138,23.433 C 529.089,23.481 529.051,23.533 529.023,23.587 C 528.995,23.641 528.975,23.698 528.964,23.758 C 528.96,23.766 528.957,23.774 528.955,23.783 C 528.953,23.793 528.952,23.801 528.952,23.809 C 528.952,23.82 528.952,23.829 528.952,23.837 C 528.952,23.844 528.952,23.852 528.952,23.859 L 528.952,25.571 L 528.47,25.571 L 528.47,23.893 C 528.47,23.811 528.459,23.734 528.436,23.663 C 528.414,23.592 528.38,23.526 528.335,23.466 C 528.29,23.406 528.234,23.362 528.167,23.332 C 528.1,23.302 528.023,23.287 527.937,23.287 C 527.828,23.298 527.738,23.322 527.667,23.36 C 527.596,23.397 527.544,23.447 527.51,23.511 C 527.476,23.575 527.451,23.642 527.434,23.713 C 527.417,23.784 527.409,23.857 527.409,23.932 C 527.409,23.936 527.409,23.94 527.409,23.943 L 527.409,23.949 L 527.409,25.571 L 526.921,25.571 L 526.921,23.713 z M 531.427,21.682 L 531.427,24.202 C 531.427,24.351 531.446,24.485 531.483,24.603 C 531.521,24.721 531.575,24.825 531.646,24.914 C 531.721,25.004 531.81,25.071 531.913,25.116 C 532.016,25.161 532.133,25.184 532.264,25.184 C 532.387,25.184 532.497,25.166 532.595,25.13 C 532.692,25.095 532.776,25.041 532.847,24.971 C 532.915,24.899 532.971,24.825 533.016,24.746 C 533.061,24.667 533.094,24.587 533.117,24.505 C 533.124,24.486 533.129,24.466 533.131,24.446 C 533.133,24.425 533.136,24.404 533.139,24.381 C 533.143,24.359 533.146,24.337 533.147,24.317 C 533.149,24.296 533.15,24.276 533.15,24.258 C 533.15,24.108 533.131,23.977 533.091,23.865 C 533.052,23.753 532.995,23.661 532.92,23.59 C 532.846,23.515 532.766,23.456 532.682,23.413 C 532.598,23.37 532.51,23.343 532.421,23.332 C 532.41,23.332 532.399,23.332 532.39,23.332 C 532.381,23.332 532.372,23.332 532.365,23.332 C 532.361,23.332 532.356,23.332 532.351,23.332 C 532.345,23.332 532.34,23.33 532.337,23.326 C 532.329,23.326 532.323,23.326 532.32,23.326 C 532.316,23.326 532.312,23.326 532.309,23.326 C 532.253,23.326 532.2,23.33 532.151,23.337 C 532.103,23.345 532.058,23.356 532.017,23.371 C 531.976,23.386 531.935,23.402 531.896,23.419 C 531.857,23.435 531.817,23.453 531.775,23.472 L 531.77,23.478 L 531.764,23.478 C 531.757,23.481 531.749,23.485 531.742,23.489 C 531.734,23.493 531.729,23.494 531.725,23.494 C 531.717,23.498 531.711,23.502 531.705,23.506 C 531.7,23.509 531.693,23.513 531.686,23.517 C 531.671,23.521 531.657,23.525 531.643,23.531 C 531.63,23.537 531.616,23.543 531.601,23.55 L 531.601,23.051 C 531.643,23.032 531.683,23.014 531.722,22.995 C 531.761,22.976 531.802,22.959 531.843,22.944 C 531.884,22.929 531.925,22.916 531.966,22.905 C 532.007,22.894 532.05,22.885 532.095,22.877 C 532.114,22.873 532.133,22.87 532.154,22.869 C 532.175,22.867 532.196,22.864 532.219,22.86 C 532.23,22.86 532.24,22.86 532.25,22.86 C 532.259,22.86 532.269,22.858 532.281,22.854 C 532.288,22.854 532.297,22.854 532.309,22.854 C 532.32,22.854 532.331,22.854 532.342,22.854 C 532.518,22.854 532.683,22.884 532.836,22.942 C 532.99,23 533.134,23.088 533.268,23.208 C 533.403,23.324 533.505,23.463 533.574,23.624 C 533.643,23.784 533.678,23.966 533.678,24.168 C 533.678,24.355 533.648,24.535 533.588,24.707 C 533.528,24.879 533.439,25.043 533.319,25.2 C 533.203,25.358 533.056,25.474 532.878,25.549 C 532.7,25.623 532.495,25.661 532.264,25.661 C 532.032,25.661 531.83,25.624 531.658,25.551 C 531.485,25.478 531.343,25.367 531.231,25.217 C 531.119,25.064 531.034,24.9 530.978,24.726 C 530.922,24.552 530.894,24.366 530.894,24.168 L 530.894,21.682 L 531.427,21.682 z M 534.166,21.637 L 534.694,21.637 L 534.694,23.231 L 536.378,23.231 L 536.378,21.637 L 536.905,21.637 L 536.905,25.571 L 536.378,25.571 L 536.378,23.758 L 534.694,23.758 L 534.694,25.571 L 534.166,25.571 L 534.166,21.637 z" + style="fill:#000000;fill-rule:evenodd;stroke:none" /> + </g> + <text + xml:space="preserve" + style="font-size:6.40893126px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="431.33109" + y="481.29651" + id="text4313"><tspan + sodipodi:role="line" + id="tspan4315" + x="431.33109" + y="481.29651">Mai 2011</tspan></text> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="zeichnung" + style="display:inline"> + <path + id="path168" + d="M 236.92018,114.79457 L 236.92018,90.04047" + style="fill:none;stroke:#000000;stroke-width:1.20000005;marker-start:url(#ArrowStart)" /> + <text + xml:space="preserve" + style="font-size:24.45913696px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="152.673" + y="33.06731" + id="text3009"><tspan + sodipodi:role="line" + id="tspan3011" + x="152.673" + y="33.06731">Funktionsweise MXD2map</tspan></text> + <g + id="g3833" + transform="translate(35.966454,4.7255402)"> + <rect + rx="19.995394" + ry="19.995394" + y="116.97306" + x="151.96501" + height="40.990559" + width="97.977432" + id="rect3013" + style="fill:#9ebdf4;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + id="text3797" + style="font-size:12px;fill:#000000;fill-rule:evenodd;stroke:none;font-family:Helvetica" + x="171.57248" + y="141.83034">MXD-Datei</text> + </g> + <g + id="g3813" + transform="translate(-110.99968,288.38913)"> + <rect + rx="19.995394" + ry="19.995394" + y="63.485378" + x="279.93552" + height="40.990559" + width="135.96869" + id="rect3803" + style="fill:#9ebdf4;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <text + id="text3805" + style="font-size:12px;fill:#000000;fill-rule:evenodd;stroke:none;display:inline;font-family:Helvetica" + x="302.50735" + y="88.342659">MapServer-Datei</text> + </g> + <g + id="g4010" + transform="translate(-35.501794,-13.38903)"> + <g + transform="translate(3.9837967,53.821232)" + id="g3823"> + <rect + ry="19.995392" + y="155.96408" + x="159.96317" + height="116.97305" + width="216.95003" + id="rect3799" + style="opacity:1;fill:#9ebdf4;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + rx="19.995394" /> + <text + y="174.32285" + x="180.57039" + style="font-size:12px;fill:#000000;fill-rule:evenodd;stroke:none;display:inline;font-family:Helvetica" + id="text3801">MXD2map</text> + </g> + <image + xlink:href="/home/clients/bsh/mxd-konverter/Material/architektur/img/arcgis-logo.png" + sodipodi:absref="/home/clients/bsh/mxd-konverter/Material/architektur/img/arcgis-logo.png" + width="59.406544" + height="41.994282" + id="image3924" + x="180.33536" + y="259.97614" /> + <g + transform="matrix(1.4806571,0,0,1.4806571,-145.02243,-149.66876)" + id="g3999"> + <image + y="284.87512" + x="278.77701" + id="image3991" + height="19.701038" + width="74.272911" + sodipodi:absref="/home/clients/bsh/mxd-konverter/Material/architektur/img/banner.png" + xlink:href="/home/clients/bsh/mxd-konverter/Material/architektur/img/banner.png" /> + <text + xml:space="preserve" + style="font-size:7.32055473px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="279.4693" + y="282.42068" + id="text3995"><tspan + sodipodi:role="line" + id="tspan3997" + x="279.4693" + y="282.42068">Java MapScript</tspan></text> + </g> + </g> + <g + id="g4020" + transform="translate(90.997215,-1.5751801)"> + <rect + rx="19.995394" + style="opacity:1;fill:#9ebdf4;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="rect4004" + width="216.95003" + height="37.991245" + x="37.447952" + y="49.488598" + ry="19.995392" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="90.086052" + y="71.794769" + id="text4006"><tspan + sodipodi:role="line" + id="tspan4008" + x="90.086052" + y="71.794769">ArcGIS Desktop 10</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1.20000005;marker-start:url(#ArrowStart)" + d="M 236.92018,190.40321 L 236.92018,165.64911" + id="path4150" /> + <path + id="path4152" + d="M 236.92018,342.47013 L 236.92018,317.71603" + style="fill:none;stroke:#000000;stroke-width:1.20000005;marker-start:url(#ArrowStart)" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.20000005;marker-start:url(#ArrowStart)" + d="M 236.92018,423.29118 L 236.92018,398.53708" + id="path4154" /> + <g + id="g4164" + transform="translate(23.932742,9.0556322)"> + <rect + style="fill:#9ebdf4;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4158" + width="97.977432" + height="40.990559" + x="379.3934" + y="184.44119" + ry="19.995394" + rx="19.995394" /> + <text + y="208.05647" + x="388.72522" + style="font-size:12px;fill:#000000;fill-rule:evenodd;stroke:none;font-family:Helvetica" + id="text4160">Map-Template</text> + </g> + <path + id="path4168" + d="M 351.10187,251.88474 L 399.94887,221.36535" + style="fill:none;stroke:#000000;stroke-width:1.19999993;marker-start:url(#ArrowStart)" + inkscape:transform-center-x="-22.849842" + inkscape:transform-center-y="-1.3622312" /> + <g + id="g4302" + transform="translate(-221.40187,64.906086)"> + <rect + rx="19.995394" + style="opacity:1;fill:#9ebdf4;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="rect3821" + width="216.95003" + height="37.991245" + x="353.41861" + y="371.58163" + ry="19.995392" /> + <g + transform="translate(226.16725,-69.349294)" + id="g4297"> + <image + y="452.45642" + x="271.80328" + id="image4096" + height="14.940277" + width="56.324844" + sodipodi:absref="/home/clients/bsh/mxd-konverter/Material/architektur/img/banner.png" + xlink:href="/home/clients/bsh/mxd-konverter/Material/architektur/img/banner.png" /> + <image + y="451.88843" + x="216.73216" + id="image4146" + height="16.076233" + width="39.831738" + sodipodi:absref="/home/clients/bsh/mxd-konverter/Material/architektur/img/apache.jpg" + xlink:href="/home/clients/bsh/mxd-konverter/Material/architektur/img/apache.jpg" /> + <image + style="display:inline" + y="454.23315" + x="143.32458" + id="image4287" + height="11.386805" + width="60.011536" + sodipodi:absref="/home/clients/bsh/mxd-konverter/Material/architektur/img/openlayers-logo-40.png" + xlink:href="/home/clients/bsh/mxd-konverter/Material/architektur/img/openlayers-logo-40.png" /> + </g> + </g> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" + x="374.29175" + y="180.43629" + id="text4309"><tspan + sodipodi:role="line" + id="tspan4311" + x="374.29175" + y="180.43629">Konfigurierbar</tspan></text> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doku/source/INSTALL.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,1 @@ +../../INSTALL.txt \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doku/source/conf.py Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,235 @@ +# -*- coding: utf-8 -*- +# +# MXD2map documentation build configuration file, created by +# sphinx-quickstart on Mon Jun 20 09:48:05 2011. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ----------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.viewcode'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.txt' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'MXD2map' +copyright = u'2011, foo bar' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '0.0.1' +# The full version, including alpha/beta/rc tags. +release = '0.0.1' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +language = 'de' + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + + +# -- Options for HTML output --------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'default' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# "<project> v<release> documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a <link> tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'MXD2mapdoc' + + +# -- Options for LaTeX output -------------------------------------------------- + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'MXD2map.tex', u'MXD2map Documentation', + u'foo bar', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + +latex_elements = { +'preamble': r'''\newcommand{\pyHeaderFamily}{\sffamily\bfseries} +\fancypagestyle{normal}{ \fancyhf{} + \fancyfoot[LE,RO]{{\pyHeaderFamily \thepage}} + \fancyfoot[LO]{{\pyHeaderFamily \nouppercase{\rightmark}}} + \fancyfoot[RE]{{\pyHeaderFamily \nouppercase{\leftmark}}} + \fancyhead[LE,RO]{{\pyHeaderFamily \title, + \releasename\space\version}} + \renewcommand{\headrulewidth}{0.4pt} + \renewcommand{\footrulewidth}{0.4pt} + % changes + %\fancyhead[LO,RE]{{\includegraphics[height=0.5cm]{InteProxy-logo.png}}} + +} +''', +'classoptions': ',oneside', +'babel': '\\usepackage[ngerman,german]{babel}' +} + + +# -- Options for manual page output -------------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'mxd2map', u'MXD2map Documentation', + [u'foo bar'], 1) +]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doku/source/index.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,23 @@ +.. MXD2map documentation master file, created by + sphinx-quickstart on Mon Jun 20 09:48:05 2011. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to MXD2map's documentation! +=================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + INSTALL.txt + restrictions.txt + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doku/source/restrictions.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +------------ +Restrictions +------------ + +Currently there are some restrictions in the usage of the converter: + +Supported datasources: + + * ArcSDE-passwords cannot be read since they are encrypted. The converter + exports the string "define me" which needs to be replaced later on in the + resulting mapfile + + *
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mapserver/epsg/epsg Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,5 @@ +# WGS 84 / LAT-LON +<4326> +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs <> + +# DHDN / Gauss-Kruger zone 3 +<31467> +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs <>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mapserver/fonts/fonts.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,3 @@ +## SLES 11 +DejaVuSans /usr/share/fonts/truetype/DejaVuSans.ttf +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mapserver/mapfile/mapfile_header.include Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,60 @@ +STATUS ON +SIZE 400 400 +EXTENT 3427000 5787000 3444200 5801000 +UNITS meters +IMAGECOLOR -1 -1 -1 #transparent +FONTSET "../../ttf-fonts/fonts.txt" +SYMBOLSET "../symbols/symbols.sym" +SHAPEPATH "../../testdata-frida/" +IMAGETYPE png +CONFIG "ON_MISSING_DATA" "LOG" # see http://mapserver.org/mapfile/map.html for details +CONFIG "MS_ERRORFILE" "../../logs/ms_error.log" +DEBUG 5 + +MAXSIZE 2500 # 2500x2500 pixel maximum Site + +# Own PROJECTION-file +CONFIG "PROJ_LIB" "../../mapserver/epsg" + +PROJECTION + "init=epsg:31467" +END + +#8bit png, supports transparency. +OUTPUTFORMAT + NAME aggpng + DRIVER AGG/PNG + MIMETYPE "image/png" + + ## transparency only with RGBA Image Mode + ## mapserver had to be compiled -with-experimental-png + + IMAGEMODE RGBA + EXTENSION "png" + + ## The next options works with transparency, when requesting another + ## layer within the same request. When requesting the layer alone, + ## everything seems black. TODO: Verify if this is a bug or a features. + ## Anyway, it reduces the PNG-filesize by 70% though! + FORMATOPTION "QUANTIZE_FORCE=ON" + FORMATOPTION "QUANTIZE_COLORS=256" + FORMATOPTION "QUANTIZE_NEW=ON" + + + ## The next options will work with transparency but are incompatible + ## with the previous quantization options. + #FORMATOPTION "PALETTE_FORCE=ON" + #FORMATOPTION "PALETTE=/home/geo4/mapserver/palette.txt" #to be defined + + TRANSPARENT ON +END + +#24bit png, supports all colors but does not support transparency. +OUTPUTFORMAT + NAME aggpng24 + DRIVER AGG/PNG + MIMETYPE "image/png; mode=24bit" + IMAGEMODE RGBA + EXTENSION "png" +END +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mapserver/mapfile/mxd.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,41 @@ +#MapServer mxd map file +MAP + + NAME "mxd" + INCLUDE "mapfile_header.include" + +WEB + IMAGEPATH "/tmp/" + IMAGEURL "/tmp/" + + METADATA + 'ows_title' 'Intevation MXD WMS DemoService' + 'ows_srs' 'EPSG:4326 EPSG:31467' + 'ows_extent' '3427000 5787000 3444200 5801000' + 'ows_addresstype' 'postal' + 'ows_address' 'Neuer Graben 17' + 'ows_postcode' '49074' + 'ows_city' 'Osnabrueck' + 'ows_stateorprovince' 'DE-NDS' + 'ows_country' 'DE' + 'ows_contactposition' 'Geospatial' + 'ows_contactperson' 'Bjoern Schilberg' + 'ows_contactorganization' 'Geospatial' + 'ows_contactvoicetelephone' '+49 541 33 50 83 0' + 'ows_contactfacsimiletelephone' '+49 541 33 50 83 99' + 'ows_contactelectronicmailaddress' 'geospatial@intevation.de' + 'ows_abstract' 'MXD - Demo-Dienst für die Überprüfung der Konvertierung der MXD Dateien nach MAP Dateien.' + 'ows_fees' 'Die Nutzung dieses Dienstes ist kostenfrei.' + 'ows_accessconstraints' 'Sämtliche Rechte an diesem Produkt liegen bei der Intevation GmbH.' + 'ows_keywordlist' 'MXD, STYLES, SYMBOLOGY' + 'ows_sld_enabled' 'false' + 'ows_http_max_age' '86400' # should 24h in seconds + 'ows_enable_request' '*' + 'wms_feature_info_mime_type' 'text/html' + 'wms_getmap_formatlist' 'image/png,image/png; mode=24bit' + 'wms_encoding' 'UTF-8' + 'wms_exceptions_format' 'XML' + END +END + +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mapserver/rundir/Readme.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +This is a placeholder. + +This folder is intended to copy the generated Mapfiles to and run them +through mapserver with the following command: + +http://localhost/cgi-bin/mapserv.exe?map=z:/mxd-testbed_sh/rundir/p_categorie_4pt_11classes.map&template=openlayers&mode=browse&layers=poi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mapserver/symbols/symbols.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,8 @@ +SYMBOLSET + # basic symbol for hatching in all variantes which + # will be combined inside the STYLE-block + SYMBOL + NAME "hatch" + TYPE hatch + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/README_mxd.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,19 @@ +=========== +MXD TESTBED +=========== + +For more information take a look at: +https://bsh-intern.intevation.de/MXD/Arbeitspakete/AP2/1 + +URLs +==== +http://bhutan.atlas.intevation.de/cgi-bin/wms_mxd.cgi +http://bhutan.atlas.intevation.de/cgi-bin/wms_mxd.cgi?Request=GetCapabilities&Service=WMS&Version=1.1.1 + + +Setting up mapserver mxd testbed under SLES 11 +============================================== +zypper in mapserver +ln -s /home/intevation/mxd-testbed/contrib/sh/wms_mxd.cgi /srv/www/cgi-bin +ln -s /home/intevation/mxd-testbed/contrib/apache/mxd-testbed.conf /etc/apache2/vhosts.d/ +/etc/init.d/apache2 reload
Binary file mxd/Shapefile-SimpleFeature/Geometry/LineString/gewaesserlinien-joined.mxd.old has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/label/pol_label_allthesame.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,5 @@ +Label all entries the same +Labelfield: gfName +Font: Arial +Size: 8pt +FontColor: black
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/label/pol_label_scaledependent.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +Label all features the same way +Font: Arial +size: 12 +FontColor: 85 255 0 +LabelField: gfName +Minscale: all below 1:24.000
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.lyr has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,30 @@ +LAYER + NAME "l_cartoline_04pt_c255-255-255_butt-round_template_multilayer" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_cartoline_04pt_c255-255-255_butt-round_template_multilayer" + END + CLASS + STYLE + SYMBOL "l_cartoline_04pt_c255-255-255_butt-round_template_multilayer" + LINECAP butt #[butt|round|square|triangle] + LINEJOIN round #[round|miter|bevel] + #LINEJOINMAXSIZE 3 #only relevant for LINEJOIN type MITER + COLOR 0 0 0 + WIDTH 1 + OFFSET 0 -0.8 + END + STYLE + SYMBOL "l_cartoline_04pt_c255-255-255_butt-round_template_multilayer" + LINECAP butt #[butt|round|square|triangle] + LINEJOIN round #[round|miter|bevel] + #LINEJOINMAXSIZE 3 #only relevant for LINEJOIN type MITER + COLOR 0 0 0 + WIDTH 1 + OFFSET 0 0.8 + END + END +END
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.mxd has changed
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,7 @@ +SYMBOL + NAME "l_cartoline_04pt_c255-255-255_butt-round_template_multilayer" + ## AGG library error. Cartoline drawing is deprecated with AGG + #TYPE CARTOLINE + TYPE SIMPLE + PATTERN 4 1 END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_04pt_c255-255-255_butt-round_template_multilayer.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,35 @@ +# Hinweis: Unterschied zw. erster und zweiter Layer: LineProperties.Offset +LineProperties.Offset: -0,8000 +LineProperties.LineDecorations: None + +# erster Layer + +Type: Cartographic Line Symbol +Units: Points + +CartographicLine.Color: 0 0 0 +CartographicLine.Width: 0,4000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Round + +Template.Interval: 1,00 +Template.RepeatingMark/GapLinePattern: 4-1 + +LineProperties.Offset: -0,8000 +LineProperties.LineDecorations: None + +# zweiter Layer + +Type: Cartographic Line Symbol +Units: Points + +CartographicLine.Color: 0 0 0 +CartographicLine.Width: 0,4000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Round + +Template.Interval: 1,00 +Template.RepeatingMark/GapLinePattern: 4-1 + +LineProperties.Offset: 0,8000 +LineProperties.LineDecorations: None \ No newline at end of file
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-bever.lyr has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-bever.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,20 @@ +LAYER + NAME "l_cartoline_1pt_c255-255-255_butt-bever" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_cartoline_1pt_c255-255-255_butt-bever" + END + CLASS + STYLE + SYMBOL "l_cartoline_1pt_c255-255-255_butt-bever" + LINECAP butt #[butt|round|square|triangle] + LINEJOIN bevel #[round|miter|bevel] + #LINEJOINMAXSIZE 3 #only relevant for LINEJOIN type MITER + COLOR 0 0 0 + WIDTH 1 + END + END +END
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-bever.mxd has changed
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-bever.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-bever.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +SYMBOL + NAME "l_cartoline_1pt_c255-255-255_butt-bever" + ## AGG library error. Cartoline drawing is deprecated with AGG + #TYPE CARTOLINE + TYPE SIMPLE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-bever.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +Type: Cartographic Line Symbol +Units: Points + +CartographicLine.Color: 0 0 0 +CartographicLine.Width: 1,0000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Bevel + +Template.Interval: 1,00 +Template.RepeatingMark/GapLinePattern: + +LineProperties.Offset: 0,0000 +LineProperties.LineDecorations: None \ No newline at end of file
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-miter.lyr has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-miter.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,20 @@ +LAYER + NAME "l_cartoline_1pt_c255-255-255_butt-miter" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_cartoline_1pt_c255-255-255_butt-miter" + END + CLASS + STYLE + SYMBOL "l_cartoline_1pt_c255-255-255_butt-miter" + LINECAP butt #[butt|round|square|triangle] + LINEJOIN miter #[round|miter|bevel] + #LINEJOINMAXSIZE 3 #only relevant for LINEJOIN type MITER + COLOR 0 0 0 + WIDTH 1 + END + END +END
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-miter.mxd has changed
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-miter.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-miter.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +SYMBOL + NAME "l_cartoline_1pt_c255-255-255_butt-miter" + ## AGG library error. Cartoline drawing is deprecated with AGG + #TYPE CARTOLINE + TYPE SIMPLE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-miter.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +Type: Cartographic Line Symbol +Units: Points + +CartographicLine.Color: 0 0 0 +CartographicLine.Width: 1,0000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Miter + +Template.Interval: 1,00 +Template.RepeatingMark/GapLinePattern: + +LineProperties.Offset: 0,0000 +LineProperties.LineDecorations: None \ No newline at end of file
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-round.lyr has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-round.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,20 @@ +LAYER + NAME "l_cartoline_1pt_c255-255-255_butt-round" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_cartoline_1pt_c255-255-255_butt-round" + END + CLASS + STYLE + SYMBOL "l_cartoline_1pt_c255-255-255_butt-round" + LINECAP butt #[butt|round|square|triangle] + LINEJOIN round #[round|miter|bevel] + #LINEJOINMAXSIZE 3 #only relevant for LINEJOIN type MITER + COLOR 0 0 0 + WIDTH 1 + END + END +END
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-round.mxd has changed
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-round.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-round.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +SYMBOL + NAME "l_cartoline_1pt_c255-255-255_butt-round" + ## AGG library error. Cartoline drawing is deprecated with AGG + #TYPE CARTOLINE + TYPE SIMPLE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_butt-round.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +Type: Cartographic Line Symbol +Units: Points + +CartographicLine.Color: 0 0 0 +CartographicLine.Width: 1,0000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Round + +Template.Interval: 1,00 +Template.RepeatingMark/GapLinePattern: + +LineProperties.Offset: 0,0000 +LineProperties.LineDecorations: None \ No newline at end of file
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_round-butted.lyr has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_round-butted.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,20 @@ +LAYER + NAME "l_cartoline_1pt_c255-255-255_round-butted" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_cartoline_1pt_c255-255-255_round-butted" + END + CLASS + STYLE + SYMBOL "l_cartoline_1pt_c255-255-255_round-butted" + LINECAP butt #[butt|round|square|triangle] + LINEJOIN round #[round|miter|bevel] + #LINEJOINMAXSIZE 3 #only relevant for LINEJOIN type MITER + COLOR 0 0 0 + WIDTH 1 + END + END +END
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_round-butted.mxd has changed
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_round-butted.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_round-butted.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +SYMBOL + NAME "l_cartoline_1pt_c255-255-255_round-butted" + ## AGG library error. Cartoline drawing is deprecated with AGG + #TYPE CARTOLINE + TYPE SIMPLE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_1pt_c255-255-255_round-butted.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +Type: Cartographic Line Symbol +Units: Points + +CartographicLine.Color: 0 0 0 +CartographicLine.Width: 1,0000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Round + +Template.Interval: 1,00 +Template.RepeatingMark/GapLinePattern: + +LineProperties.Offset: 0,0000 +LineProperties.LineDecorations: None \ No newline at end of file
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_6pt_c255-255-255_butt-round_template.lyr has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_6pt_c255-255-255_butt-round_template.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,21 @@ +LAYER + NAME "l_cartoline_6pt_c255-255-255_butt-round_template" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_cartoline_6pt_c255-255-255_butt-round_template" + END + CLASS + STYLE + SYMBOL "l_cartoline_6pt_c255-255-255_butt-round_template" + LINECAP butt #[butt|round|square|triangle] + LINEJOIN round #[round|miter|bevel] + #LINEJOINMAXSIZE 3 #only relevant for LINEJOIN type MITER + PATTERN 1 1 END + COLOR 0 0 0 + WIDTH 6 + END + END +END
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_6pt_c255-255-255_butt-round_template.mxd has changed
Binary file mxd/Styles/line/CartographicLineSymbol/l_cartoline_6pt_c255-255-255_butt-round_template.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_6pt_c255-255-255_butt-round_template.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +SYMBOL + NAME "l_cartoline_6pt_c255-255-255_butt-round_template" + ## AGG library error. Cartoline drawing is deprecated with AGG + #TYPE CARTOLINE + TYPE SIMPLE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/CartographicLineSymbol/l_cartoline_6pt_c255-255-255_butt-round_template.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +Type: Cartographic Line Symbol +Units: Points + +CartographicLine.Color: 0 0 0 +CartographicLine.Width: 6,0000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Round + +Template.Interval: 1,00 +Template.RepeatingMark/GapLinePattern: 1-1 + +LineProperties.Offset: 0,0000 +LineProperties.LineDecorations: None \ No newline at end of file
Binary file mxd/Styles/line/HashLineSymbol/l_hashline_90,0_Express-Way_255-251-134_1,0.lyr has changed
Binary file mxd/Styles/line/HashLineSymbol/l_hashline_90,0_Express-Way_255-251-134_1,0.mxd has changed
Binary file mxd/Styles/line/HashLineSymbol/l_hashline_90,0_Express-Way_255-251-134_1,0.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/HashLineSymbol/l_hashline_90,0_Express-Way_255-251-134_1,0.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,8 @@ +SYMBOL + NAME "CartographicLine" + TYPE cartoline + LINECAP round #[butt|round|square|triangle] + LINEJOIN miter #[round|miter|bevel] + LINEJOINMAXSIZE 3 +END +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/HashLineSymbol/l_hashline_90,0_Express-Way_255-251-134_1,0.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,68 @@ +l_hashline_90,0_Express-Way_255-251-134_1,0 + +Type: Hash Line Symbol +Units: Points + +HashLine.Angle: 90,00 +HashLine.HashSymbol: Express Way + +CartographicLine.Color: 255 251 134 +CartographicLine.With: 1,0000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Miter + +Template.RepeatingMark/GapLinePattern: 1-1 +Template.Interval: 1,00 + +LineProperties.Offset: 0,0000 +LineProperties.LineDecorations: None + +##HashSymbol + +#Layer 1 + +Type: Cartographic Line Symbol +Units: Points + +CartographicLine.Color: 0 0 0 +CartographicLine.Width: 0,8000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Rount + +Template.RepeatingMark/GapLinePattern: +Template.Interval: 1,00 + +LineProperties.Offset: 0,0000 +LineProperties.LineDecoration: None + +#Layer 2 + +Type: Cartographic Line Symbol +Units: Points + +CartographicLine.Color: 255 251 134 +CartographicLine.Width: 2,6000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Rount + +Template.RepeatingMark/GapLinePattern: +Template.Interval: 1,00 + +LineProperties.Offset: 0,0000 +LineProperties.LineDecoration: None + +#Layer 3 + +Type: Cartographic Line Symbol +Units: Points + +CartographicLine.Color: 0 0 0 +CartographicLine.Width: 3,4000 +CartographicLine.LineCaps: Butt +CartographicLine.LineJoins: Rount + +Template.RepeatingMark/GapLinePattern: +Template.Interval: 1,00 + +LineProperties.Offset: 0,0000 +LineProperties.LineDecoration: None \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/MarkerLineSymbol/l_markerline_18pt_0-0-0_raute.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,15 @@ +LAYER + NAME "l_markerline_18pt_0-0-0_raute" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_markerline_18pt_0-0-0_raute" + END + CLASS + SYMBOL "l_markerline_18pt_0-0-0_raute" + COLOR 0 0 0 + SIZE 18 + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/MarkerLineSymbol/l_markerline_18pt_0-0-0_raute.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,12 @@ +SYMBOL + NAME "l_markerline_18pt_0-0-0_raute" + TYPE VECTOR + POINTS + 0 0.5 + 0.5 0 + 1 0.5 + 0.5 1 + 0 0.5 + END + FILLED FALSE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/MarkerLineSymbol/l_markerline_18pt_0-0-0_raute.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,12 @@ +shapefile +Markerline +Marker: + Font: ESRI Default Marker + Subset: Latin + Unicode: 87 + Size: 18pt + Angle: 0 + Color: 0-0-0 + Mask: None + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/PictureLineSymbol/l_pictureline_brick1_1_1_1-0-0-0.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,17 @@ +LAYER + NAME "l_pictureline_brick1_1_1_1-0-0-0" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_pictureline_brick1_1_1_1-0-0-0" + END + CLASS + STYLE + SYMBOL "l_pictureline_brick1_1_1_1-0-0-0" + COLOR 0 0 0 + SIZE 1 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/PictureLineSymbol/l_pictureline_brick1_1_1_1-0-0-0.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +SYMBOL + NAME "l_pictureline_brick1_1_1_1-0-0-0" + TYPE PIXMAP + IMAGE "/home/intevation/mxd-testbed/images/brick1.png" + TRANSPARENT 0 #PictureMarker.TransparentColor: 255 255 255 +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/PictureLineSymbol/l_pictureline_brick1_1_1_1-0-0-0.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,12 @@ +l_pictureline_brick1_1_1_1-0-0-0 + +Type: Picture Line Symbol +Units: Points +PictureLine.Picture: C:\Program Files\ArcGIS\Desktop10.0\Styles\Pictures\brick1.bmp +PictureLine.With: 1,0000 +PictureLine.Scale X: 1,0000 +PictureLine.Scale Y: 1,0000 +PictureLine.ForegroundColor: 0 0 0 +PictureLine.BackgroundColor: No Color +PictureLine.Transparentcolor: +PictureLine.Swap Foreground Color on 1 bit Images: \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/README.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,10 @@ +Possible types +============== + +* 3D Simple Line Symbol (deferred) +* 3D Texture Line Symbol (deferred) +* Cartographic Line Symbol +* Hash Line Symbol +* Marker Line Symbol +* Picture Line Symbol +* Simple Line Symbol
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dash-dott-dott_1pt_c255-255-255.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,17 @@ +LAYER + NAME "l_dash-dott-dott_1pt_c255-255-255" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_dash-dott-dott_1pt_c255-255-255" + END + CLASS + STYLE + SYMBOL "l_dash-dott-dott_1pt_c255-255-255" + COLOR 0 0 0 + SIZE 1 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dash-dott-dott_1pt_c255-255-255.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +SYMBOL + NAME "l_dash-dott-dott_1pt_c255-255-255" + TYPE SIMPLE + + #dash-dot-dot line where the dashes are seven and spaces are five pixels long + #first number: dash length (7 pixel) + #second number: space length (5 pixel) + #third number: one pixel dot + #fourth number: space length (5 pixel) + #five number: one pixel dot + #six number: space length (5 pixel) + PATTERN 7 5 1 5 1 5 END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dash-dott-dott_1pt_c255-255-255.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +Type: Simple Line Symbol +Units: Points + +SimpleLine.Color: 0 0 0 +SimpleLine.Style: Dash-Dot-Dot +SimpleLine.Width: 1,0000 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dash-dotted_1pt_c255-255-255.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,17 @@ +LAYER + NAME "l_dash-dotted_1pt_c255-255-255" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_dash-dotted_1pt_c255-255-255" + END + CLASS + STYLE + SYMBOL "l_dash-dotted_1pt_c255-255-255" + COLOR 0 0 0 + SIZE 1 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dash-dotted_1pt_c255-255-255.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,11 @@ +SYMBOL + NAME "l_dash-dotted_1pt_c255-255-255" + TYPE SIMPLE + + #dash-dot line where the dashes are seven and spaces are five pixels long + #first number: dash length (7 pixel) + #second number: space length (5 pixel) + #third number: one pixel dot + #fourth number: space length (5 pixel) + PATTERN 7 5 1 5 END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dash-dotted_1pt_c255-255-255.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +Type: Simple Line Symbol +Units: Points + +SimpleLine.Color: 0 0 0 +SimpleLine.Style: Dash-Dot +SimpleLine.Width: 1,0000 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dashed_1pt_c255-255-255.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,17 @@ +LAYER + NAME "l_dashed_1pt_c255-255-255" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_dashed_1pt_c255-255-255" + END + CLASS + STYLE + SYMBOL "l_dashed_1pt_c255-255-255" + COLOR 0 0 0 + SIZE 1 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dashed_1pt_c255-255-255.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,9 @@ +SYMBOL + NAME "l_dashed_1pt_c255-255-255" + TYPE SIMPLE + + #dashed line where the dashes and spaces are both five pixels long + #first number: dash length + #second number: space length + PATTERN 5 5 END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dashed_1pt_c255-255-255.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +Type: Simple Line Symbol +Units: Points + +SimpleLine.Color: 0 0 0 +SimpleLine.Style: Dashed +SimpleLine.Width: 1,0000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dotted_1pt_c255-255-255.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,17 @@ +LAYER + NAME "l_dotted_1pt_c255-255-255" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_dotted_1pt_c255-255-255" + END + CLASS + STYLE + SYMBOL "l_dotted_1pt_c255-255-255" + COLOR 0 0 0 + SIZE 1 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dotted_1pt_c255-255-255.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,9 @@ +SYMBOL + NAME "l_dotted_1pt_c255-255-255" + TYPE SIMPLE + + #dotted line where the dashes and spaces are both one pixels long + #first number: dash length + #second number: space length + PATTERN 1 1 END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_dotted_1pt_c255-255-255.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +Type: Simple Line Symbol +Units: Points + +SimpleLine.Color: 0 0 0 +SimpleLine.Style: Dotted +SimpleLine.Width: 1,0000 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_solid_1pt_c255-255-255.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,17 @@ +LAYER + NAME "l_solid_1pt_c255-255-255" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_solid_1pt_c255-255-255" + END + CLASS + STYLE + SYMBOL "l_solid_1pt_c255-255-255" + COLOR 0 0 0 + WIDTH 1 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_solid_1pt_c255-255-255.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,5 @@ +SYMBOL + NAME "l_solid_1pt_c255-255-255" + TYPE SIMPLE + FILLED TRUE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_solid_1pt_c255-255-255.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +Type: Simple Line Symbol +Units: Points + +SimpleLine.Color: 0 0 0 +SimpleLine.Style: Solid +SimpleLine.Width: 1,0000 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_solid_4pt_c255-255-255.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,15 @@ +LAYER + NAME "l_solid_4pt_c255-255-255" + DATA "gewaesserlinien" + TYPE LINE + GROUP "line" + STATUS ON + METADATA + "wms_title" "l_solid_4pt_c255-255-255" + END + CLASS + SYMBOL "l_solid_4pt_c255-255-255" + COLOR 0 0 0 + WIDTH 4 + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_solid_4pt_c255-255-255.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,3 @@ +SYMBOL + NAME "SimpleLineSolid" +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/line/SimpleLineSymbol/l_solid_4pt_c255-255-255.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +Type: Simple Line Symbol +Units: Points + +SimpleLine.Color: 0 0 0 +SimpleLine.Style: Solid +SimpleLine.Width: 4,0000 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12-0.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,19 @@ +LAYER + NAME "p_arrowmarker_0-0-0_12-0" + TYPE POINT + DATA "poi" + STATUS ON + GROUP "point" + METADATA + "wms_title" "p_arrowmarker_0-0-0_12-0" + END + CLASS + STYLE + SYMBOL "p_arrowmarker_0-0-0_12-0" + ANGLE 90 + COLOR 0 0 0 + SIZE 12 + WIDTH 8 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12-0.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,11 @@ +SYMBOL + NAME "p_arrowmarker_0-0-0_12-0" + TYPE VECTOR + POINTS + 0 1 + 0.5 0 + 1 1 + 0 1 + END + FILLED TRUE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/ArrowMarkerSymbol/p_arrowmarker_0-0-0_12-0.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,11 @@ +Type: Arrow Marker Symbol +Units: Points + +ArrowMarker.Color: 0 0 0 +ArrowMarker.Length: 12,0000 +ArrowMarker.Width: 8,0000 +ArrowMarker.XOffset: 0,0000 +ArrowMarker.YOffset: 0,0000 +ArrowMarker.Angel: 0,00 + +Mask.Style: None \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/CharacterMarkerSymbol/p_charmarker_18pt_c255-0-0.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,17 @@ +LAYER + NAME "p_charmarker_18pt_c255-0-0" + TYPE POINT + DATA "poi" + STATUS ON + GROUP "point" + METADATA + "wms_title" "p_charmarker_18pt_c255-0-0" + END + CLASS + STYLE + SYMBOL "p_charmarker_18pt_c255-0-0" + COLOR 255 0 0 + SIZE 18 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/CharacterMarkerSymbol/p_charmarker_18pt_c255-0-0.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,7 @@ +SYMBOL + NAME "p_charmarker_18pt_c255-0-0" + TYPE TRUETYPE + FONT "ESRIDefaultMarker" + CHARACTER "B" + ANTIALIAS TRUE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/CharacterMarkerSymbol/p_charmarker_18pt_c255-0-0.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,14 @@ +Type: Character Marker Symbol +Units: Points + +CharacterMarker.Font: ESRI Default Marker +CharacterMarker.Subset: Basic Latin +CharacterMarker.Unicode: 66 +CharacterMarker.Size: 18 +CharacterMarker.Angel: 0,00 +CharacterMarker.Color: 255 0 0 +CharacterMarker.Offset.X:0,0000 +CharacterMarker.Offset.Y:0,0000 + + +CharacterMarker.Mask.Style: None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/CharacterMarkerSymbol/p_single_18pt_c255-255-255_ttf.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,17 @@ +LAYER + NAME "p_single_18pt_c255-255-255_ttf" + TYPE POINT + DATA "poi" + STATUS ON + GROUP "point" + METADATA + "wms_title" "p_single_18pt_c255-255-255_ttf" + END + CLASS + STYLE + SYMBOL "p_single_18pt_c255-255-255_ttf" + COLOR 0 0 0 + SIZE 18 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/CharacterMarkerSymbol/p_single_18pt_c255-255-255_ttf.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,7 @@ +SYMBOL + NAME "p_single_18pt_c255-255-255_ttf" + TYPE TRUETYPE + FONT "ESRIDefaultMarker" + CHARACTER "F" + ANTIALIAS TRUE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/CharacterMarkerSymbol/p_single_18pt_c255-255-255_ttf.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +Type: Character Marker Symbol +Units: Points + +CharacterMarker.Font: ESRI Default Marker +CharacterMarker.Subset: Basic Latin +CharacterMarker.Unicode: 70 +CharacterMarker.Size: 18 +CharacterMarker.Angle: 0,00 +CharacterMarker.Color: 0 0 0 +CharacterMarker.Offset.X: 0,0000 +CharacterMarker.Offset.Y: 0,0000 + +Mask.Style: None \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/PictureMarkerSymbol/p_pictmarker_11pt_warning.bmp.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,16 @@ +LAYER + NAME "p_pictmarker_11pt_warning.bmp" + TYPE POINT + DATA "poi" + STATUS ON + GROUP "point" + METADATA + "wms_title" "p_pictmarker_11pt_warning.bmp" + END + CLASS + STYLE + SYMBOL "p_pictmarker_11pt_warning.bmp" + SIZE 11 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/PictureMarkerSymbol/p_pictmarker_11pt_warning.bmp.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,6 @@ +SYMBOL + NAME "p_pictmarker_11pt_warning.bmp" + TYPE PIXMAP + IMAGE "/home/intevation/mxd-testbed/images/warning.png" + TRANSPARENT 0 #PictureMarker.TransparentColor: 255 255 255 +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/PictureMarkerSymbol/p_pictmarker_11pt_warning.bmp.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,12 @@ +Type: Picture Marker Symbol +Units: Points + +PictureMarker.Picture: Z:\waring.bmp +PictureMarker.Size: 11,0 +PictureMarker.Angle: 0,00 +PictureMarker.XOffset: 0,00 +PictureMarker.YOffset: 0,00 +PictureMarker.BackgroundColor: No Color +PictureMarker.TransparentColor: 255 255 255 + +PictureMarker.Mask.Style: None
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/README.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,16 @@ +Possible types +============== + +* 3D Character Marker Symbol (deferred) +* 3D Marker Symbol (deferred) +* 3D Simple Marker Symbol (defeferred) +* Arrow Marker Symbol +* Character Marker Symbol +* Picture Marker Symbol +* Simple Marker Symbol + * Style: + * Circle + * Square + * Cross + * X + * Diamond
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/SimpleMarkerSymbol/TODO.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,7 @@ +MAPFILE fuer: +- p_categorie_4pt_11classes +- p_categorie_4pt_5quantity-classes + +Weitere Hinweise zu Colorramps: +http://mapserver.org/development/rfc/ms-rfc-6.html +http://trac.osgeo.org/mapserver/ticket/1305
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/SimpleMarkerSymbol/p_categorie_4pt_11classes.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,26 @@ +Symbology +Symbology.Categories.UniqueValues +Symbology.Categories.UniqueValues.ValueField:poiTypID + +Symbology.Categories.UniqueValues.ColorRamp: +Symbology.Categories.UniqueValues.ColorRamp.Ranges.MinimumValue:60 +Symbology.Categories.UniqueValues.ColorRamp.Ranges.MaximumValue:80 +Symbology.Categories.UniqueValues.ColorRamp.Ranges.MinimumSaturation:60 +Symbology.Categories.UniqueValues.ColorRamp.Ranges.MaximumSaturation:80 +Symbology.Categories.UniqueValues.ColorRamp.Ranges.SartHue:0 +Symbology.Categories.UniqueValues.ColorRamp.Ranges.EndHue:0 + +#Properties for All Symbols ... +Type: Simple Marker Symbol +Units: Points +SimpleMarker.Color: 128 128 128 +SimpleMarker.Style: Circle +SimpleMarker.Size: 4,0000 +SimpleMarker.XOffset: 0,0000 +SimpleMarker.YOffset: 0,0000 + +SimpleMarker.UseOutline: Yes/True +SimpleMarker.Outline: 0 0 0 +SimpleMarker.Outline.OutlineSize: 1,0000 + +SimpleMarker.Mask.Style: None \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/SimpleMarkerSymbol/p_categorie_4pt_5quantity-classes.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,31 @@ +Symbology + +Symbology.Quantities: Graduates colors +Symbology.Quantities.Fields.Value: poiTypID +Symbology.Quantities.Fields.Normalization: none +Symbology.Quantities.Classification.Method: Natural Breaks (Jenks) +Symbology.Quantities.Classification.Classes: 5 +Symbology.Quantities.Classification.Columns: 100 +Symbology.Quantities.Classification.BreakValues: 2 4 5 7 10 + +Symbology.ColorRamp.General.Colors.Color1.HSV: 164 17% 96% +Symbology.ColorRamp.General.Colors.Color2.HSV: 157 77% 81% +Symbology.ColorRamp.General.Algorithm: CIE Lab +Symbology.ColorRamp.Black: #FIXME SLIDER +Symbology.ColorRamp.White: #FIXME SLIDER + +#Properties for All Symbols ... +Type: Simple Marker Symbol +Units: Points + +SimpleMarker.Color.HSV: 164 17% 96% +SimpleMarker.Style: Circle +SimpleMarker.Size: 4,0000 +SimpleMarker.XOffset: 0,0000 +SimpleMarker.YOffset: 0,0000 + +SimpleMarker.UseOutline: Yes/True +SimpleMarker.Outline: 0 0 0 +SimpleMarker.OutlineSize: 1,0000 + +SimpleMarker.Mask.Style: None \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/SimpleMarkerSymbol/p_single_4pt_c255-0-0.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,18 @@ +LAYER + NAME "p_single_4pt_c255-0-0" + TYPE POINT + DATA "poi" + STATUS ON + GROUP "point" + METADATA + "wms_title" "p_single_4pt_c255-0-0" + END + CLASS + STYLE + SYMBOL "p_single_4pt_c255-0-0" + SIZE 4 + COLOR 255 0 0 + OUTLINECOLOR 0 0 0 + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/SimpleMarkerSymbol/p_single_4pt_c255-0-0.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,8 @@ +SYMBOL + NAME "p_single_4pt_c255-0-0" + TYPE ELLIPSE + POINTS + 1 1 + END + FILLED TRUE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/point/SimpleMarkerSymbol/p_single_4pt_c255-0-0.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +Type: Simple Marker Symbol +Units: Points + +SimpleMarker.Color: 255 0 0 +SimpleMarker.Style: Circle +SimpleMarker.Size: 4,0000 +SimpleMarker.XOffset: 0,0000 +SimpleMarker.YOffset: 0,0000 +SimpleMarker.UseOutline: Yes/True +SimpleMarker.Outline: 0 0 0 +SimpleMarker.OutlineSize: 1,0000 + +SimplerMarker.Mask: None \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/GradientFillSymbol/pol_gradientfill_5_75_90_Linear.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,18 @@ +pol_gradientfill_5_75_90_Linear + +Type: Gradient Fill symbol +Units: Points +GradientFill.Intervals: 5 +GradientFill.Percentage: 75 +GradientFill.Angle: 90 +GradientFill.Style: Linear +GradientFill.ColorRamp.General.Color1: HSV 120 20% 100% +GradientFill.ColorRamp.General.Algorithm: CIE Lab +GradientFill.ColorRamp.General.Black: +GradientFill.ColorRamp.General.White: + + +GradientFill.Outline.Type: Simple Line Symbol +GradientFill.Outline.SimpleLine.Color: 110 110 110 +GradientFill.Outline.SimpleLine.Style:Solid +GradientFill.Outline.SimpleLine.Width: 1,0000 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/LineFillSymbol/pol_linefill_255-0-0_45_outline.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,24 @@ +LAYER + NAME "pol_linefill_255-0-0_45_outline" + TYPE POLYGON + DATA "gruenflaechen" + STATUS ON + GROUP "polygon" + METADATA + "wms_title" "pol_linefill_255-0-0_45_outline" + END + CLASS + STYLE + SYMBOL "pol_linefill_255-0-0_45_outline" + COLOR 255 0 0 + ANGLE 45 + SIZE 10 + WIDTH 3 + END + STYLE # outline + OUTLINECOLOR 0 0 0 + WIDTH 1 + ANTIALIAS TRUE + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/LineFillSymbol/pol_linefill_255-0-0_45_outline.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,4 @@ +SYMBOL + NAME "pol_linefill_255-0-0_45_outline" + TYPE HATCH +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/LineFillSymbol/pol_linefill_255-0-0_45_outline.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,21 @@ +Type: Line Fill Symbol +Units: Points + +LineFill.Color: 255 0 0 +LineFill.Line.Type: Simple Line Symbol +LineFill.Line.Units: Points + +LineFill.Line.SimpleLine.Color: 255 0 0 +LineFill.Line.SimpleLine.Style: Dotted +LineFill.Line.SimpleLine.Width: 1,0000 + +LineFill.Outline.Type: Simple Line Symbol +LineFill.Outline.Units: Points + +LineFill.Outline.SimpleLine.Color: 0 0 0 +LineFill.Outline.SimpleLine.Style: Soild +LineFill.Outline.SimpleLine.Width: 1,0000 + +LineFill.Angle: 45,00 +LineFill.Offset: 0,0000 +LineFill.Separation: 5,0000 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,22 @@ +LAYER + NAME "pol_marker_fill_0-0-0_1" + TYPE POLYGON + DATA "gewaesserflaechen" + STATUS ON + GROUP "polygon" + METADATA + "wms_title" "pol_marker_fill_0-0-0_1" + END + CLASS + STYLE + SYMBOL "pol_marker_fill_0-0-0_1" + COLOR 0 0 0 + SIZE 8 + END + STYLE # outline + OUTLINECOLOR 110 110 110 + WIDTH 1 + ANTIALIAS TRUE + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,8 @@ +SYMBOL + NAME "pol_marker_fill_0-0-0_1" + TYPE ELLIPSE + POINTS + 1 1 + END + FILLED TRUE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/MarkerFillSymbol/pol_marker_fill_0-0-0_1.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,20 @@ +Type: Maker Fill Symbol +Units: Points + +MarkerFill.Color: 0 0 0 +MarkerFill.Marker.Type: Simple Marker Symbol +MarkerFill.Marker.Units: Points +MarkerFill.Marker.SimpleMarker.Color: 0 0 0 +MarkerFill.Marker.SimpleMarker.Style: Circle +MarkerFill.Marker.SimpleMarker.Size: 8,0000 +MarkerFill.Marker.SimpleMarker.XOffset: 0,0000 +MarkerFill.Marker.SimpleMarker.YOffset: 0,0000 +MarkerFill.Marker.SimpleMarker.UseOutline: #NotSet + +MarkerFill.Outline.Type: Simple Line Symbol +MarkerFill.Outline.Units: Points +MarkerFill.Outline.SimpleLine.Color: 110 110 100 +MarkerFill.Outline.Style: Solid +MarkerFill.Outline.Width: 1,0000 + +MarkerFill.Grid: Yes/True \ No newline at end of file
Binary file mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.lyr has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,20 @@ +LAYER + NAME "pol_single_04pt_109-187-67_0-1-1_Grassland" + TYPE POLYGON + DATA "gruenflaechen" + STATUS ON + GROUP "polygon" + METADATA + "wms_title" "pol_single_04pt_109-187-67_0-1-1_Grassland" + END + CLASS + STYLE + SYMBOL "pol_single_04pt_109-187-67_0-1-1_Grassland" + END + STYLE # outline + OUTLINECOLOR 109 187 67 + WIDTH 1 + ANTIALIAS TRUE + END + END +END
Binary file mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.mxd has changed
Binary file mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,5 @@ +SYMBOL + NAME "pol_single_04pt_109-187-67_0-1-1_Grassland" + TYPE PIXMAP + IMAGE "/home/intevation/mxd-testbed/images/grass.png" +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/PictureFillSymbol/pol_single_04pt_109-187-67_0-1-1_Grassland.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,22 @@ +Type: Picture Fill Symbol +Units: Points + +PictureFill.Picture: Grassland +PictureFill.Angle: 0,00 +PictureFill.ScaleX: 1,00 +PictureFill.ScaleY: 1,00 +PictureFill.ForegroundColor: 109 187 67 +PictureFill.BackgroundColor: 255 255 255 +PictureFill.TransparentColor: #NotSet +PictureFill.SwapForegroundAndBackgroundColorOn1BitImages: #NotSet + +PictureFill.Outline.Type: Simple Line Symbol +PictureFill.Outline.Units: Points +PictureFill.Outline.simpleLine.Color: 109 187 67 +PictureFill.Outline.SimpleLine.Style: Solid +PictureFill.Outline.SimpleLine.Width: 0,4000 + +PictureFill.FillProperties.Offset.X: 0,0000 +PicutreFill.FillProperties.Offset.Y: 0,0000 +PictureFill.FillProperties.Separation.X: 0,0000 +PictureFill.FillProperties.Separation.Y: 0,0000 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/README.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,9 @@ +Possible types +============== + +* 3D Texture Fill Symbol (deferred) +* Gradient Fill Symbol +* Line Fill Symbol +* Marker Fill Symbol +* Picture Fill Symbol +* Simple Fill Symbol
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/SimpleFillSymbol/pol_simple_255-0-0.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,21 @@ +LAYER + NAME "pol_simple_255-0-0" + TYPE POLYGON + DATA "gruenflaechen" + STATUS ON + GROUP "polygon" + METADATA + "wms_title" "pol_simple_255-0-0" + END + CLASS + STYLE + SYMBOL "pol_simple_255-0-0" + COLOR 255 0 0 + END + STYLE # outline + OUTLINECOLOR 0 0 0 + WIDTH 1 + ANTIALIAS TRUE + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/SimpleFillSymbol/pol_simple_255-0-0.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,5 @@ +SYMBOL + NAME "pol_simple_255-0-0" + TYPE SIMPLE + FILLED TRUE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/SimpleFillSymbol/pol_simple_255-0-0.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +Type: Simple Fill Symbol +Units: Points + +SimpleFill.Color: 255 0 0 +SimpleFill.OutlineColor: 0 0 0 +SimpleFill.OutlineWidth: 1,0000 + +SimpleFill.Outline.Type: SimpleLineSymbol +SimpleFill.Outline.Units: Points + +SimpleFill.Outline.SimpleLine.Color: 0 0 0 +SimpleFill.Outline.SimpleLine.Style: Solid +SimpleFill.Outline.SimpleLine.Width: 1,0000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/SimpleFillSymbol/pol_simple_transp_dashed-outline.map Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,21 @@ +LAYER + NAME "pol_simple_transp_dashed-outline" + TYPE POLYGON + DATA "gruenflaechen" + STATUS ON + GROUP "polygon" + METADATA + "wms_title" "pol_simple_transp_dashed-outline" + END + CLASS + STYLE + SYMBOL "pol_simple_transp_dashed-outline" + END + STYLE # outline + SYMBOL "l_dashed_1pt_c255-255-255" + OUTLINECOLOR 0 0 0 + WIDTH 1 + ANTIALIAS TRUE + END + END +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/SimpleFillSymbol/pol_simple_transp_dashed-outline.sym Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,5 @@ +SYMBOL + NAME "pol_simple_transp_dashed-outline" + TYPE SIMPLE + FILLED FALSE +END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/Styles/polygon/SimpleFillSymbol/pol_simple_transp_dashed-outline.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,12 @@ +Type: Simple Fill Symbol +Units: Points + +SimpleFill.color: No Color +SimpleFill.OutlineColor: 0 0 0 +SimpleFill.OutlineWidth: 1,0000 + +SimpleFill.Outline.Type: Simple Line Symbol +SimpleFill.Outline.Units: Points +SimpleFill.Outline.SimpleLine.Color: 0 0 0 +SimpleFill.Outline.SimpleLine.Style: Dashed +SimpleFill.Outline.SimpleLine.Width: 1,0000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/connections/PGDB/pgdb_areas.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,1 @@ +Layer-Verbindung zu Personal Geodatabase ist hier einzig interessant.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mxd/connections/SDE/sde_areas.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,13 @@ +SDE:server,instanz,db,user,pw,table table +ogrinfo -al -so SDE:pluto,5152,SGE.SGEFeatures,gast,gast,SGE.SGEAreas \ +SGE.AREAS + +LAYER + ... + CONNECTIONTYPE PLUGIN + CONNECTION "hostname,port:xxx,database,username,password" + PLUGIN "C:/ms_6.1-dev/bin/msplugin_sde_93.dll" + DATA "layername,geometrycolumn,SDE.DEFAULT" + ... +END # layer +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/properties.xml Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,30 @@ +<!-- ========================================= --> +<!-- load environment variables --> +<!-- ========================================= --> +<property environment="env"/> +<condition property="runtime.home" value="${env.AGSENGINEJAVA}"> + <available file="arcobjects.jar" filepath="${env.AGSENGINEJAVA}/java/lib" /> +</condition> +<condition property="runtime.home" value="${env.AGSDESKTOPJAVA}"> + <not> + <isset property="runtime.home"/> + </not> +</condition> +<property name="devkit.home" value="${env.AGSDEVKITJAVA}" /> +<property name="ant.home" value="${devkit.home}/java/tools/ant"/> + +<!-- ========================================= --> +<!-- directory mappings --> +<!-- ========================================= --> +<property name="root.dir" location="${basedir}"/> +<basename property="sample.dir" file="${basedir}" /> +<property name="src.dir" location="src"/> +<property name="build.dir" location="c:\tmp\build_sh"/> +<property name="class.dir" location="${build.dir}/classes"/> +<property name="dist.dir" location="${build.dir}/dist"/> +<property name="libs.dir" location="lib"/> + +<!-- ========================================= --> +<!-- jar file mapping --> +<!-- ========================================= --> +<property name="arcobjects.jar" location="${runtime.home}/java/lib/arcobjects.jar"/>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/ArcGISInitializer.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,143 @@ +package de.intevation.mxd; + +import java.io.IOException; +import java.io.File; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.system.AoInitialize; +import com.esri.arcgis.system.EngineInitializer; +import com.esri.arcgis.system.esriLicenseProductCode; +import com.esri.arcgis.system.esriLicenseStatus; + +/** + * Initializes the ArcGIS Engine and Objects. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class ArcGISInitializer { + + /** + * The Logger. + */ + private static final Logger logger = Logger.getLogger(ArcGISInitializer.class); + + /** + * Private member. + */ + private AoInitialize aoInit; + private String engineInstallDir = ""; + + + /** + * Init ArcGIS Java Objects. + */ + public boolean initArcGIS () + throws IOException { + logger.debug("initArcGIS()"); + + String engineInstallDir = System.getenv("AGSENGINEJAVA"); + if(engineInstallDir == null) { + engineInstallDir = System.getenv("AGSDESKTOPJAVA"); + if(engineInstallDir == null) { + logger.error("Could not find ArcGIS Environment. \n" + + "AGSENGINEJAVA or AGSDESKTOPJAVA not set."); + return false; + } + } + + //Obtain the relative path to the arcobjects.jar file + String jarPath = engineInstallDir + "java" + File.separator + "lib" + + File.separator + "arcobjects.jar"; + + //Create a new file + File jarFile = new File(jarPath); + + //Test for file existence + if(!jarFile.exists()){ + logger.error("The arcobjects.jar was not found in the following location: " + + jarFile.getParent()); + logger.error("Verify that arcobjects.jar can be located in the specified folder."); + logger.error("If not present, try uninstalling your ArcGIS software and reinstalling it."); + System.exit(0); + } + + //Helps load classes and resources from a search path of URLs + URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); + Class<URLClassLoader> sysclass = URLClassLoader.class; + + try { + Method method = sysclass.getDeclaredMethod("addURL", new Class[]{URL.class}); + method.setAccessible(true); + method.invoke(sysloader, new Object[]{jarFile.toURI().toURL()}); + } + catch (Throwable throwable) { + throwable.printStackTrace(); + logger.error("Could not add arcobjects.jar to system classloader"); + System.exit(0); + } + + EngineInitializer.initializeEngine(); + + aoInit = new AoInitialize(); + return true; + } + + /** + * Init ArcGIS License. + */ + public boolean initArcGISLicenses() + throws IOException { + logger.debug("initArcGISLicenses()"); + if(aoInit.isProductCodeAvailable + (esriLicenseProductCode.esriLicenseProductCodeEngine) == + esriLicenseStatus.esriLicenseAvailable) { + aoInit.initialize + (esriLicenseProductCode.esriLicenseProductCodeEngine); + } + else if (aoInit.isProductCodeAvailable + (esriLicenseProductCode.esriLicenseProductCodeArcView) == + esriLicenseStatus.esriLicenseAvailable) { + aoInit.initialize + (esriLicenseProductCode.esriLicenseProductCodeArcView); + } + else { + logger.error("Engine Runtime or ArcView" + + " license not initialized.\n" + + "Please install an ArcGIS product and set the" + + " PATH-variable correctly."); + return false; + } + return true; + } + + /** + * Shutdown the ArcGIS Objects. + */ + public boolean shutdownArcGIS() + throws IOException { + if(aoInit != null) { + aoInit.shutdown(); + return true; + } + else { + return false; + } + } + + /** + * Get the ArcGIS Engine Directory. + */ + public String getEngineDirectory() + throws Exception { + if(engineInstallDir == "") { + throw new Exception("Call initArcGIS() first!"); + } + else { + return engineInstallDir; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/Converter.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,147 @@ +package de.intevation.mxd; + +import java.io.File; +import java.io.FileInputStream; +import java.io.BufferedInputStream; +import java.util.Properties; + +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; + +import java.net.MalformedURLException; + +import de.intevation.mxd.reader.IReader; +import de.intevation.mxd.reader.MXDReader; +import de.intevation.mxd.writer.IWriter; +import de.intevation.mxd.writer.MapScriptWriter; +/** + * The entry point of the MXD converter tool. + * + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class Converter { + + /** + * The logging is done via Log4j. To configure the logging + * a file 'log4j.properties' is search in the configuration + * directory. + */ + public static final String LOG4J_PROPERTIES = "log4j.properties"; + + /** + * + * The path of the configuration directory. + */ + public static final String CONFIG_PATH = System.getProperty("config.dir", + "conf"); + + + /** + * The logger used in this class. + */ + private static Logger logger; + + static { + configureLogging(); + logger = Logger.getLogger(Converter.class); + } + + + /** + * Entrypoint for the application. + */ + public static void main(String[] args) { + try{ + String mxdfile = ""; + String mapfile = ""; + String maptemplate = ""; + int ndx = 0; + if (args.length > 0) { + if (args[0].equals("-mxd") && args.length >= 2) { + mxdfile = args[1]; + ndx = 2; + } + } + if (args.length >= ndx + 2) { + if (args[ndx].equals("-map")) { + mapfile = args[ndx+1]; + ndx += 2; + } + } + if (args.length >= ndx + 2) { + if (args[ndx].equals("-template")) { + maptemplate = args[ndx+1]; + ndx += 2; + } + } + + if(mxdfile.equals("")) { + try { + mxdfile = readProperty("mxd"); + } + catch(Exception e) { + e.printStackTrace (); + } + } + if(mapfile.equals("")) { + try { + mapfile = readProperty("map"); + } + catch(Exception e) { + e.printStackTrace (); + } + } + if(maptemplate.equals("")) { + try { + maptemplate = readProperty("map-template"); + } + catch(Exception e) { + e.printStackTrace (); + } + } + + IReader reader = new MXDReader(); + IWriter writer = new MapScriptWriter(maptemplate, mapfile); + + reader.init(); + reader.setFilename(mxdfile); + reader.read(); + + writer.write(reader.getMapDocument()); + reader.shutdown(); + } + catch(Exception e) { + logger.error(e.getMessage()); + } + } + + private static String readProperty (String key) + throws Exception { + Properties properties = new Properties(); + BufferedInputStream stream = + new BufferedInputStream( + new FileInputStream("converter.properties") + ); + properties.load(stream); + stream.close(); + return properties.getProperty(key); + } + /** + * Trys to load the Log4j configuration + * from ${config.dir}/log4j.properties. + */ + public static final void configureLogging() { + File configDir = new File(CONFIG_PATH); + File propFile = new File(configDir, LOG4J_PROPERTIES); + if (propFile.isFile() && propFile.canRead()) { + try { + PropertyConfigurator.configure(propFile.toURI().toURL()); + } + catch (MalformedURLException mue) { + mue.printStackTrace(System.err); + } + } + } + +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/AbstractSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,45 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Element; +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * Reads multi layer marker symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public abstract class AbstractSymbolReader implements ISymbolReader{ + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(AbstractSymbolReader.class); + + /** + * Private member. + */ + protected Element parent; + protected MapToXMLUtils util; + + + /** + * Setter for the parent XML element. + * + * @param parent The XML parent node. + */ + public void setParent(Element p) { + this.parent = p; + } + + /** + * Setter for XML document helper. + * + * @param util The helper class for storing map information. + */ + public void setUtil(MapToXMLUtils u) { + this.util = u; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,162 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IMarkerSymbol; +import com.esri.arcgis.display.ArrowMarkerSymbol; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; + +import org.w3c.dom.Element; +import java.awt.Color; + +import java.io.IOException; + +/** + * Reads arrow marker symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class ArrowMarkerSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(ArrowMarkerSymbolReader.class); + + /** + * Private member. + */ + private ArrowMarkerSymbol symbol; + + public ArrowMarkerSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof ArrowMarkerSymbol) { + this.symbol = (ArrowMarkerSymbol)symbol; + } + else { + throw new Exception("Not a ArrowMarkerSymbol!"); + } + } + + public ArrowMarkerSymbolReader(IMarkerSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof ArrowMarkerSymbol) { + this.symbol = (ArrowMarkerSymbol)symbol; + } + else { + throw new Exception("Not a ArrowMarkerSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + Element symbolElement = util.addSymbol(parent); + + try{ + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(color.getTransparency())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(col.getTransparency())); + } + } + catch(IOException ioe) { + logger.warn("Could not read color."); + } + + try { + symbolElement.setAttribute( + "angle", + String.valueOf(symbol.getAngle())); + } + catch(IOException ioe) { + logger.warn("Could not read angle."); + } + + try { + symbolElement.setAttribute( + "size", + String.valueOf(symbol.getSize())); + } + catch(IOException ioe) { + logger.warn("Could not read size. Setting size to 1."); + symbolElement.setAttribute("size", "1"); + } + + try { + symbolElement.setAttribute( + "x_offset", + String.valueOf(symbol.getXOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read x-offset."); + } + + try { + symbolElement.setAttribute( + "y_offset", + String.valueOf(symbol.getYOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read y-offset."); + } + + try { + symbolElement.setAttribute( + "name", + symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\""); + symbolElement.setAttribute("name", "default"); + } + + try { + symbolElement.setAttribute( + "length", + String.valueOf(symbol.getLength())); + } + catch(IOException ioe) { + logger.warn("Could not read length."); + } + + try { + symbolElement.setAttribute( + "width", + String.valueOf(symbol.getWidth())); + } + catch(IOException ioe) { + logger.warn("Could not read width."); + } + symbolElement.setAttribute("style", "arrow"); + symbolElement.setAttribute("type", "marker"); + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/CartoLineSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,207 @@ +package de.intevation.mxd.reader; + +import java.awt.Color; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.ILineSymbol; +import com.esri.arcgis.display.CartographicLineSymbol; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; +import com.esri.arcgis.display.Template; + +import com.esri.arcgis.display.esriLineCapStyle; +import com.esri.arcgis.display.esriLineJoinStyle; + +import org.w3c.dom.Element; +import java.io.IOException; + +/** + * Reads cartoline symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class CartoLineSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(CartoLineSymbolReader.class); + + /** + * Private member. + */ + private CartographicLineSymbol symbol; + + public CartoLineSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof CartographicLineSymbol) { + this.symbol = (CartographicLineSymbol)symbol; + } + else { + throw new Exception("Not a CartographicLineSymbol!"); + } + } + + + public CartoLineSymbolReader(ILineSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof CartographicLineSymbol) { + this.symbol = (CartographicLineSymbol)symbol; + } + else { + throw new Exception("Not a CartographicLineSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + Element symbolElement = util.addSymbol(parent); + + try { + symbolElement.setAttribute("name", symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\""); + symbolElement.setAttribute("name", "default"); + } + + try { + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + } + } + catch(IOException ioe) { + logger.warn("Could not read color."); + } + + int cap; + String capStyle = ""; + try { + cap = symbol.getCap(); + } + catch(IOException ioe) { + logger.warn( + "Could not read line cap."); + cap = -1; + } + switch(cap) { + case esriLineCapStyle.esriLCSRound: capStyle = "round"; break; + case esriLineCapStyle.esriLCSSquare: capStyle = "square"; break; + default: break; + } + + + int join; + String joinStyle = ""; + try { + join = symbol.getJoin(); + } + catch(IOException ioe) { + logger.warn( + "Could not read line join." + + " Setting line join to \"bevel\"."); + join = -1; + } + switch(join) { + case esriLineJoinStyle.esriLJSRound: joinStyle = "round"; break; + case esriLineJoinStyle.esriLJSMitre: joinStyle = "miter"; break; + default: break; + } + if(!capStyle.equals("")) { + symbolElement.setAttribute("cap", capStyle); + } + if (!joinStyle.equals("")) { + symbolElement.setAttribute("join", joinStyle); + } + + try { + symbolElement.setAttribute( + "linestart", + String.valueOf(symbol.getLineStartOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read line start offset."); + } + + try { + symbolElement.setAttribute( + "miterlimit", + String.valueOf(symbol.getMiterLimit())); + } + catch(IOException ioe) { + logger.warn("Could not read miter limit."); + } + + try { + symbolElement.setAttribute( + "offset", + String.valueOf(symbol.getOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read offset."); + } + + try { + symbolElement.setAttribute( + "width", + String.valueOf(symbol.getWidth())); + } + catch(IOException ioe) { + logger.warn("Could not read width."); + } + //TODO Read further attributes depending on the Mapscript functionality: + // Template, MarkerSymbol, LineDecorations + + try { + Template temp = (Template)symbol.getTemplate(); + double length = temp.getInterval(); + int count = temp.getPatternElementCount(); + symbolElement.setAttribute("pattern_count", String.valueOf(count)); + for (int j = 0; j < count; j++) { + double[] mark = new double[1]; + double[] gap = new double[1]; + temp.getPatternElement(j, mark, gap); + symbolElement.setAttribute( + "mark_" + j, + String.valueOf(mark[0])); + symbolElement.setAttribute("gap_" + j, String.valueOf(gap[0])); + } + } + catch(IOException ioe){ + logger.warn("Could not read pattern elements."); + } + catch(NullPointerException npe) { + logger.debug("No pattern elements in carto line symbol"); + } + symbolElement.setAttribute("type", "line"); + symbolElement.setAttribute("style", "carto"); + + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,170 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IMarkerSymbol; +import com.esri.arcgis.display.CharacterMarkerSymbol; +import com.esri.arcgis.support.ms.stdole.Font; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; + +import org.w3c.dom.Element; +import java.awt.Color; +import java.io.IOException; + +/** + * Reads character marker symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class CharacterMarkerSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(CharacterMarkerSymbolReader.class); + + /** + * Private member. + */ + private CharacterMarkerSymbol symbol; + + public CharacterMarkerSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof CharacterMarkerSymbol) { + this.symbol = (CharacterMarkerSymbol)symbol; + } + else { + throw new Exception("Not a CharacterMarkerSymbol!"); + } + } + + public CharacterMarkerSymbolReader(IMarkerSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof CharacterMarkerSymbol) { + this.symbol = (CharacterMarkerSymbol)symbol; + } + else { + throw new Exception("Not a CharacterMarkerSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + Element symbolElement = util.addSymbol(parent); + + try { + symbolElement.setAttribute( + "angle", + String.valueOf(symbol.getAngle())); + } + catch(IOException ioe) { + logger.warn("Could not read angle."); + } + + try { + symbolElement.setAttribute( + "size", + String.valueOf(symbol.getSize())); + } + catch(IOException ioe) { + logger.warn("Could not read size."); + } + + try { + symbolElement.setAttribute( + "x_offset", + String.valueOf(symbol.getXOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read x-offset."); + } + + try { + symbolElement.setAttribute( + "y_offset", + String.valueOf(symbol.getYOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read y-offset."); + } + + try { + symbolElement.setAttribute( + "name", + symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\""); + symbolElement.setAttribute("name", "default"); + } + + try { + symbolElement.setAttribute( + "char", + String.valueOf(symbol.getCharacterIndex())); + } + catch(IOException ioe) { + logger.warn( + "Could not read character number."); + } + + try { + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(color.getTransparency())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(col.getTransparency())); + } + } + catch(IOException ioe) { + logger.warn("Could not read color."); + } + + try { + Font f = symbol.getFont(); + symbolElement.setAttribute("font", f.getName()); + symbolElement.setAttribute("char_set", String.valueOf(f.getCharset())); + symbolElement.setAttribute("bold", String.valueOf(f.getBold())); + symbolElement.setAttribute("italic", String.valueOf(f.getItalic())); + symbolElement.setAttribute("font_size", String.valueOf(f.getSize())); + symbolElement.setAttribute( + "strike_through", + String.valueOf(f.getStrikethrough())); + symbolElement.setAttribute("weight", String.valueOf(f.getWeight())); + } + catch(IOException ioe) { + logger.warn("Could not read font. Setting font to \"FreeSans\"."); + symbolElement.setAttribute("font", "FreeSans"); + } + symbolElement.setAttribute("style", "char"); + symbolElement.setAttribute("type", "marker"); + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,141 @@ +package de.intevation.mxd.reader; + +import java.lang.Exception; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.carto.IFeatureRenderer; +import com.esri.arcgis.carto.ClassBreaksRenderer; +import com.esri.arcgis.display.ISymbol; + +import org.w3c.dom.Element; + +import de.intevation.mxd.utils.MapToXMLUtils; +import java.io.IOException; + +/** + * Reads the ClassBreaksRender Object Attributes. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class ClassBreakRendererReader +implements IRendererReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(ClassBreakRendererReader.class); + + /** + * Private member. + */ + private ClassBreaksRenderer renderer; + private Element layer; + private MapToXMLUtils util; + + + public ClassBreakRendererReader(IFeatureRenderer renderer) + throws Exception { + logger.debug("contructor()"); + if(renderer instanceof ClassBreaksRenderer) + this.renderer = (ClassBreaksRenderer)renderer; + else + throw new Exception("Not a ClassBreaksRenderer!"); + } + + /** + * Setter for the parent XML element. + * + * @param parent The XML parent node. + */ + public void setParent(Element parent) { + this.layer = parent; + } + + /** + * Setter for XML document helper. + * + * @param util The helper class for storing map information. + */ + public void setUtil(MapToXMLUtils util) { + this.util = util; + } + + /** + * Reads the Renderer attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + + int count = 0; + try { + count = renderer.getBreakCount(); + } + catch(IOException ioe) { + logger.warn( + "No break symbols found in renderer." + + " Stopped reading this renderer."); + return layer; + } + + for(int i = 0; i < count; i++){ + Element rendererElement = util.addRenderer(layer); + try { + rendererElement.setAttribute("value", + String.valueOf(renderer.getBreak(i))); + rendererElement.setAttribute("label", renderer.getLabel(i)); + rendererElement.setAttribute( + "field_count", + String.valueOf(renderer.getFieldCount())); + for(int j = 0; j < renderer.getFieldCount(); j++) { + rendererElement.setAttribute( + "expression_field_" + j, + renderer.getField(j)); + + } + rendererElement.setAttribute( + "min_value", + String.valueOf(renderer.getLowBreak(i))); + rendererElement.setAttribute("expression_operator", "<="); + + ISymbol sym = renderer.getSymbol(i); + MarkerSymbolReader markerReader = new MarkerSymbolReader(); + LineSymbolReader lineReader = new LineSymbolReader(); + FillSymbolReader fillReader = new FillSymbolReader(); + if(markerReader.canRead(sym)) { + markerReader.setSymbol(sym); + markerReader.setUtil(util); + markerReader.setParent(rendererElement); + markerReader.read(); + } + else if(lineReader.canRead(sym)) { + lineReader.setSymbol(sym); + lineReader.setUtil(util); + lineReader.setParent(rendererElement); + lineReader.read(); + } + else if(fillReader.canRead(sym)) { + fillReader.setSymbol(sym); + fillReader.setUtil(util); + fillReader.setParent(rendererElement); + fillReader.read(); + } + else { + logger.debug("Not a known symbol type: " + + sym.getClass().toString()); + } + } + catch(Exception e) { + logger.error( + "Could not read data for " + i + + ". break of renderer. Stopped reading this renderer."); + return layer; + } + } + return layer; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/FeatureClassReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,65 @@ +package de.intevation.mxd.reader; + +import java.io.IOException; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.geodatabase.IClass; +import com.esri.arcgis.geodatabase.FeatureClass; + +import org.w3c.dom.Node; + +/** + * Reads FeatureClass information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class FeatureClassReader +implements IClassReader { + + /** + * The Logger. + */ + private static final Logger logger = + Logger.getLogger(FeatureClassReader.class); + + /** + * Private member. + */ + private IClass fclass; + private Node parent; + + + public FeatureClassReader(IClass cl) + throws Exception { + if(cl instanceof FeatureClass) { + this.fclass = cl; + } + else { + throw new Exception("Not a FeatureClass object!" + + cl.getClass().toString()); + } + } + + /** + * Reads the Layer content. + * + * @return Currently always false. + */ + public boolean read() + throws IOException { + logger.debug("read() -> not implemented jet."); + return false; + } + + public void getClassDoc() + throws IOException { + logger.debug("getLayer() -> not implemented jet."); + return; + } + + public void setXMLNode(Node node) { + parent = node; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/FeatureLayerReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,229 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.carto.ILayer; +import com.esri.arcgis.carto.FeatureLayer; +import com.esri.arcgis.geodatabase.FeatureClassName; +import com.esri.arcgis.system.IName; +import com.esri.arcgis.system.IPropertySet; +import org.w3c.dom.Element; + +import de.intevation.mxd.utils.MapToXMLUtils; +import java.io.IOException; +import com.esri.arcgis.interop.AutomationException; +/** + * Reads Layer information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class FeatureLayerReader +implements ILayerReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(FeatureLayerReader.class); + + /** + * Privte member. + */ + private FeatureLayer layer; + private MapToXMLUtils util; + + + public FeatureLayerReader(ILayer layer) + throws Exception { + if(layer instanceof FeatureLayer) { + this.layer = (FeatureLayer)layer; + } + else { + throw new Exception("Not an instance of FeatureLayer: " + + layer.getClass().toString()); + } + } + + /** + * Setter for XML document helper. + * + * @param util The helper for storing map information. + */ + public void setUtil(MapToXMLUtils util) { + this.util = util; + } + + /** + * Reads the Layer content. + * + * @return The layer XML element. + */ + public Element read() + throws IOException{ + logger.debug("read()"); + Element layerElement; + try { + layerElement = util.addLayer(); + } + catch(Exception e) { + logger.error("Failed to create DOM-Element for Layer."); + return null; + } + + try { + layerElement.setAttribute("name", layer.getName()); + } + catch(IOException ioe) { + logger.warn( + "Could not read layer name." + + " Stopped reading layer."); + throw new IOException("Error reading layer name."); + } + + try { + layerElement.setAttribute("min_scale", + String.valueOf(layer.getMinimumScale())); + } + catch(IOException ioe) { + logger.warn("Could not read minimum scale."); + } + + try { + layerElement.setAttribute("max_scale", + String.valueOf(layer.getMaximumScale())); + } + catch(IOException ioe) { + logger.warn( + "Could not read maximum scale."); + } + + try { + if(layer.isVisible()) { + layerElement.setAttribute("status", "on"); + } + else { + layerElement.setAttribute("status", "off"); + } + } + catch(IOException ioe) { + logger.warn( + "Could not read layer status." + + " Setting layer status to \"on\"."); + layerElement.setAttribute("status", "on"); + } + + int type = 0; + try { + type = layer.getShapeType(); + } + catch(IOException ioe) { + logger.warn("Could not read shape type."); + throw new IOException("Error reading shape type."); + } + switch (type) { + case 0: layerElement.setAttribute("type", "none"); break; + case 1: layerElement.setAttribute("type", "point"); break; + case 3: layerElement.setAttribute("type", "line"); break; + case 4: layerElement.setAttribute("type", "polygon"); break; + } + + try { + layerElement.setAttribute("definition_query", + layer.getDefinitionExpression()); + } + catch(IOException ioe) { + logger.warn( + "Could not read definition query."); + } + try { + IName fcn = layer.getDataSourceName(); + if(fcn instanceof FeatureClassName) { + FeatureClassName name = (FeatureClassName)fcn; + layerElement.setAttribute("data_source", name.getName()); + } + else { + logger.debug ( + "Unknown FeatureClass name:" + + fcn.getClass().toString()); + } + } + catch(IOException ioe) { + logger.warn( + "Could not read datasource." + + " Stopped reading layer " + layer.getName() + "."); + util.removeLayer(layerElement); + return null; + } + + try { + String datatype = layer.getDataSourceType(); + if(layer.getWorkspace().getType() == 0) { + layerElement.setAttribute("connection_type", "local"); + layerElement.setAttribute( + "workspace", + layer.getWorkspace().getPathName()); + } + else if(layer.getWorkspace().getType() == 1){ + layerElement.setAttribute("connection_type", "ogr"); + layerElement.setAttribute( + "data", + layer.getFeatureClass().getFeatureDataset().getName()); + layerElement.setAttribute( + "workspace", + layer.getWorkspace().getPathName()); + + } + else if(layer.getWorkspace().getType() == 2) { + IPropertySet set = layer.getWorkspace().getConnectionProperties(); + Object names[] = new Object[set.getCount()]; + Object prop[] = new Object[set.getCount()]; + set.getAllProperties(names, prop); + layerElement.setAttribute("connection_type", "SDE"); + for(int i = 0; i < names.length; i++) { + if(names[i] != null) { + String[] prop_names = (String[])names[i]; + for(int j = 0; j < prop_names.length; j++) { + layerElement.setAttribute( + prop_names[j].toLowerCase(), + set.getProperty(prop_names[j]).toString()); + } + } + } + try { + layerElement.setAttribute( + "join_table", + layer.getRelationshipClass() + .getOriginClass().getAliasName()); + layerElement.setAttribute( + "join_field", + layer.getRelationshipClass().getOriginPrimaryKey()); + layerElement.setAttribute( + "join_table_target", + layer.getRelationshipClass() + .getDestinationClass().getAliasName()); + layerElement.setAttribute( + "join_field_target", + layer.getRelationshipClass().getOriginForeignKey()); + } + catch(AutomationException ioe) { + //Do nothing, cause no jointable defined. + } + catch(IOException ae) { + //Do nothing, cause no jointable defined. + } + catch(NullPointerException npe) { + //Do nothing, cause no jointable defined. + } + } + } + catch(Exception e) { + logger.error( + "Could not read layer datasource." + + " Stopped reading layer " + layer.getName() + "."); + util.removeLayer(layerElement); + return null; + } + return layerElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/FillSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,154 @@ +package de.intevation.mxd.reader; + +import java.lang.Exception; + +import org.w3c.dom.Element; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IFillSymbol; +import com.esri.arcgis.display.MultiLayerFillSymbol; +import com.esri.arcgis.display.SimpleFillSymbol; +import com.esri.arcgis.display.MarkerFillSymbol; +import com.esri.arcgis.display.LineFillSymbol; + +/** + * Wrapper for fill symbol reader. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class FillSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(FillSymbolReader.class); + + private ISymbol symbol; + private IFillSymbol fillSymbol; + + public FillSymbolReader() throws Exception{ + logger.debug("contructor()"); + this.symbol = null; + this.fillSymbol = null; + } + + public FillSymbolReader(ISymbol symbol) throws Exception{ + logger.debug("contructor(ISymbol)"); + this.symbol = symbol; + this.fillSymbol = null; + } + + public FillSymbolReader(IFillSymbol symbol) throws Exception{ + logger.debug("contructor(ILineSymbol)"); + this.fillSymbol = symbol; + this.symbol= null; + } + + public Element read() { + ISymbolReader sreader = null; + if(symbol != null) { + try { + if(symbol instanceof SimpleFillSymbol) { + sreader = new SimpleFillSymbolReader(symbol); + } + else if(symbol instanceof MultiLayerFillSymbol) { + sreader = new MultiLayerFillSymbolReader(symbol); + } + else if(symbol instanceof MarkerFillSymbol) { + sreader = new MarkerFillSymbolReader(symbol); + } + else if(symbol instanceof LineFillSymbol) { + sreader = new LineFillSymbolReader(symbol); + } + else { + logger.debug("The reader for type " + symbol.getClass().toString() + + " is not implemented!"); + return parent; + } + } + catch(Exception e) { + logger.error( + "Could not read the symbol " + + symbol.getClass().toString()); + return parent; + } + } + else if(fillSymbol != null) { + try { + if(fillSymbol instanceof SimpleFillSymbol) { + sreader = new SimpleFillSymbolReader(fillSymbol); + } + else if(fillSymbol instanceof MultiLayerFillSymbol) { + sreader = new MultiLayerFillSymbolReader(fillSymbol); + } + else if(fillSymbol instanceof MarkerFillSymbol) { + sreader = new MarkerFillSymbolReader(fillSymbol); + } + else if(fillSymbol instanceof LineFillSymbol) { + sreader = new LineFillSymbolReader(fillSymbol); + } + else { + logger.debug("The reader for type " + + fillSymbol.getClass().toString() + + " is not implemented!"); + return parent; + } + } + catch(Exception e) { + logger.error( + "Could not read the symbol " + + symbol.getClass().toString()); + return parent; + } + } + else { + return parent; + } + if (sreader != null) { + sreader.setParent(parent); + sreader.setUtil(util); + sreader.read(); + } + return parent; + } + + public void setSymbol(ISymbol sym) { + this.symbol = sym; + this.fillSymbol = null; + } + + public void setSymbol(IFillSymbol sym) { + this.symbol = null; + this.fillSymbol = sym; + } + + public boolean canRead(ISymbol sym) { + if(sym instanceof SimpleFillSymbol || + sym instanceof MarkerFillSymbol || + sym instanceof MultiLayerFillSymbol || + sym instanceof LineFillSymbol) { + return true; + } + else { + return false; + } + } + + public boolean canRead(IFillSymbol sym) { + if(sym instanceof SimpleFillSymbol || + sym instanceof MarkerFillSymbol || + sym instanceof MultiLayerFillSymbol || + sym instanceof LineFillSymbol) { + return true; + } + else { + return false; + } + } + +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,125 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.carto.ILayer; +import com.esri.arcgis.carto.GdbRasterCatalogLayer; + +import org.w3c.dom.Element; +import java.io.IOException; +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * Reads Layer information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class GdbRasterCatalogLayerReader +implements ILayerReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(GdbRasterCatalogLayerReader.class); + + /** + * Privte member. + */ + private GdbRasterCatalogLayer layer; + private MapToXMLUtils util; + + + public GdbRasterCatalogLayerReader(ILayer layer) + throws Exception { + if(layer instanceof GdbRasterCatalogLayer) { + this.layer = (GdbRasterCatalogLayer)layer; + } + else { + throw new Exception("Not an instance of GdbRastaCatalogLayer: " + + layer.getClass().toString()); + } + } + + /** + * Setter for XML document helper. + * + * @param util The helper for storing map information. + */ + public void setUtil(MapToXMLUtils util) { + this.util = util; + } + + /** + * Reads the Layer content. + * + * @return The layer XML element. + */ + public Element read() + throws IOException { + logger.debug("read()"); + + Element layerElement; + try { + layerElement = util.addLayer(); + } + catch(Exception e) { + logger.error( + "Could not create DOM element for layer." + + "Stopped reading layer."); + throw new IOException( + this.getClass().toString() + + "Error creating dom element"); + } + + try { + layerElement.setAttribute("name", layer.getName()); + } + catch(IOException ioe) { + logger.warn("Could not read layer name. Stopped reading layer."); + throw new IOException("Error reading layer name."); + } + + try { + layerElement.setAttribute("min_scale", + String.valueOf(layer.getMinimumScale())); + } + catch(IOException ioe) { + logger.warn("Could not read minimum layer scale."); + } + + try { + layerElement.setAttribute("max_scale", + String.valueOf(layer.getMaximumScale())); + } + catch(IOException ioe) { + logger.warn("Could not read maximum layer scale."); + } + + try { + if(layer.isVisible()) { + layerElement.setAttribute("status", "on"); + } + else { + layerElement.setAttribute("status", "off"); + } + } + catch(IOException ioe) { + logger.warn( + "Could not read layer status." + + " Setting layer status to \"on\""); + layerElement.setAttribute("status", "on"); + } + + try { + layerElement.setAttribute("definition_query", + layer.getDefinitionExpression()); + } + catch(IOException ioe) { + logger.warn( + "Could not read layer definition query."); + } + return layerElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/HashLineSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,201 @@ +package de.intevation.mxd.reader; + +import java.awt.Color; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.ILineSymbol; +import com.esri.arcgis.display.HashLineSymbol; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; + +import com.esri.arcgis.display.esriLineCapStyle; +import com.esri.arcgis.display.esriLineJoinStyle; + +import org.w3c.dom.Element; +import java.io.IOException; + +/** + * Reads cartoline symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class HashLineSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(HashLineSymbolReader.class); + + /** + * Private member. + */ + private HashLineSymbol symbol; + + public HashLineSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof HashLineSymbol) { + this.symbol = (HashLineSymbol)symbol; + } + else { + throw new Exception("Not a HashLineSymbol!"); + } + } + + public HashLineSymbolReader(ILineSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof HashLineSymbol) { + this.symbol = (HashLineSymbol)symbol; + } + else { + throw new Exception("Not a HashLineSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + Element symbolElement = util.addSymbol(parent); + + try { + symbolElement.setAttribute("name", symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\"."); + symbolElement.setAttribute("name", "default"); + } + + try { + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + } + } + catch(IOException ioe) { + logger.warn("Could not read color."); + } + + int cap; + try { + cap = symbol.getCap(); + } + catch(IOException ioe) { + logger.warn("Could not read line cap."); + cap = -1; + } + String capStyle = ""; + switch(cap) { + case esriLineCapStyle.esriLCSRound: capStyle = "round"; break; + case esriLineCapStyle.esriLCSSquare: capStyle = "square"; break; + default: break; + } + + int join; + try { + join = symbol.getJoin(); + } + catch(IOException ioe) { + logger.warn("Could not read line join."); + join = -1; + } + String joinStyle = ""; + switch(join) { + case esriLineJoinStyle.esriLJSRound: joinStyle = "round"; break; + case esriLineJoinStyle.esriLJSMitre: joinStyle = "miter"; break; + default: break; + } + if(!capStyle.equals("")) { + symbolElement.setAttribute("cap", capStyle); + } + if(!joinStyle.equals("")) { + symbolElement.setAttribute("join", joinStyle); + } + + try { + symbolElement.setAttribute( + "linestart", + String.valueOf(symbol.getLineStartOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read line start offset."); + } + + try { + symbolElement.setAttribute( + "miterlimit", + String.valueOf(symbol.getMiterLimit())); + } + catch(IOException ioe) { + logger.warn("Could not read miter limit."); + } + + try { + symbolElement.setAttribute( + "offset", + String.valueOf(symbol.getOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read offset."); + } + + try { + symbolElement.setAttribute( + "width", + String.valueOf(symbol.getWidth())); + } + catch(IOException ioe) { + logger.warn("Could not read width."); + } + + try { + ILineSymbol ls = symbol.getHashSymbol(); + readHashSymbol(ls, symbolElement); + } + catch(Exception e) { + logger.warn( + "Could not read HashSymbol." + + " No fallback symbol defined."); + } + + //TODO Read further HashLine specific attributes: + // LineDecoration, Template. + symbolElement.setAttribute("type", "line"); + symbolElement.setAttribute("style", "hash"); + + return symbolElement; + } + + private void readHashSymbol(ILineSymbol ls, Element parent) + throws Exception { + LineSymbolReader lsr = new LineSymbolReader (); + if (lsr.canRead(ls)) { + lsr.setSymbol(ls); + lsr.setParent(parent); + lsr.setUtil(util); + lsr.read(); + } + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/IClassReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,18 @@ +package de.intevation.mxd.reader; + +import java.io.IOException; + +import org.w3c.dom.Node; +/** + * The interface to the class reader. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public interface IClassReader{ + + boolean read() throws IOException; + void getClassDoc() throws IOException; + void setXMLNode(Node node); + +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/ILayerReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,19 @@ +package de.intevation.mxd.reader; + +import org.w3c.dom.Element; +import java.io.IOException; + +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * The interface to the layer reader. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public interface ILayerReader{ + + void setUtil(MapToXMLUtils util); + Element read() throws IOException; + +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/IReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,38 @@ +package de.intevation.mxd.reader; + +import java.io.IOException; + +import org.w3c.dom.Document; + +/** + * The interface to the MXD-Reader. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public interface IReader { + /** + * Initializes the reader component. + */ + boolean init() throws IOException; + + /** + * Method to perform actions at the of reader usage. + */ + boolean shutdown() throws IOException; + + /** + * Set the filename. + */ + void setFilename(String name); + + /** + * Read the content. + */ + boolean read() throws Exception; + + /** + * Request DOM Document containing the map data. + */ + Document getMapDocument(); +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/IRendererReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,22 @@ +package de.intevation.mxd.reader; + +import java.lang.Exception; + +import org.w3c.dom.Element; + +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * The interface to the renderer reader. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public interface IRendererReader{ + + Element read(); + + void setParent(Element parent); + void setUtil(MapToXMLUtils util); + +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/ISymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,21 @@ +package de.intevation.mxd.reader; + +import java.lang.Exception; + +import org.w3c.dom.Element; + +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * The interface to the symbol reader. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public interface ISymbolReader{ + + Element read(); + + void setParent(Element parent); + void setUtil(MapToXMLUtils util); +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/LineFillSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,171 @@ +package de.intevation.mxd.reader; + +import java.awt.Color; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IFillSymbol; +import com.esri.arcgis.display.ILineSymbol; +import com.esri.arcgis.display.LineFillSymbol; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; + +import org.w3c.dom.Element; +import java.io.IOException; + +/** + * Reads marker line symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class LineFillSymbolReader +extends AbstractSymbolReader{ + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(LineFillSymbolReader.class); + + /** + * Private member. + */ + private LineFillSymbol symbol; + + public LineFillSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof LineFillSymbol) { + this.symbol = (LineFillSymbol)symbol; + } + else { + throw new Exception("Not a LineFillSymbol!"); + } + } + + + public LineFillSymbolReader(IFillSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof LineFillSymbol) { + this.symbol = (LineFillSymbol)symbol; + } + else { + throw new Exception("Not a LineFillSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + + Element symbolElement = util.addSymbol(parent); + + try { + symbolElement.setAttribute("name", symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\"."); + symbolElement.setAttribute("name", "default"); + } + symbolElement.setAttribute("style", "fill"); + + try { + symbolElement.setAttribute( + "offset", + String.valueOf(symbol.getOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read offset."); + } + + try { + symbolElement.setAttribute( + "separation", + String.valueOf(symbol.getSeparation())); + } + catch(IOException ioe) { + logger.warn("Could not read separation."); + } + + try { + symbolElement.setAttribute( + "angle", + String.valueOf(symbol.getAngle())); + } + catch(IOException e) { + logger.warn("Could not read angle."); + } + + try { + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(color.getTransparency())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(col.getTransparency())); + } + } + catch(IOException ioe) { + logger.warn("Could not read color."); + } + + try { + ILineSymbol ols = symbol.getOutline(); + LineSymbolReader olsr = new LineSymbolReader(); + if(olsr.canRead(ols)) { + olsr.setSymbol(ols); + olsr.setUtil(util); + olsr.setParent(symbolElement); + olsr.read(); + } + else { + logger.debug("The type of " + ols.getClass().toString() + + " is not implemented!"); + } + } + catch(Exception e) { + logger.warn("Could not read outline."); + } + + try { + ILineSymbol ls = symbol.getLineSymbol(); + LineSymbolReader lsr = new LineSymbolReader(); + if(lsr.canRead(ls)) { + symbolElement.setAttribute("hatch", "1"); + lsr.setSymbol(ls); + lsr.setUtil(util); + lsr.setParent(symbolElement); + lsr.read(); + } + else { + logger.debug("The type of " + ls.getClass().toString() + + " is not implemented!"); + } + } + catch(Exception e) { + logger.warn("Could not read line symbol."); + } + return parent; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/LineSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,171 @@ +package de.intevation.mxd.reader; + +import java.lang.Exception; + +import org.w3c.dom.Element; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.ILineSymbol; +import com.esri.arcgis.display.MultiLayerLineSymbol; +import com.esri.arcgis.display.SimpleLineSymbol; +import com.esri.arcgis.display.MarkerLineSymbol; +import com.esri.arcgis.display.PictureLineSymbol; +import com.esri.arcgis.display.CartographicLineSymbol; +import com.esri.arcgis.display.HashLineSymbol; + +/** + * Wrapper for line symbol reader. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class LineSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(LineSymbolReader.class); + + private ISymbol symbol; + private ILineSymbol lineSymbol; + + public LineSymbolReader() throws Exception{ + logger.debug("contructor()"); + this.symbol = null; + this.lineSymbol = null; + } + + public LineSymbolReader(ISymbol symbol) throws Exception{ + logger.debug("contructor(ISymbol)"); + this.symbol = symbol; + this.lineSymbol = null; + } + + public LineSymbolReader(ILineSymbol symbol) throws Exception{ + logger.debug("contructor(ILineSymbol)"); + this.lineSymbol = symbol; + this.symbol= null; + } + + public Element read() { + ISymbolReader sreader = null; + if(symbol != null) { + try { + if(symbol instanceof SimpleLineSymbol) { + sreader = new SimpleLineSymbolReader(symbol); + } + else if(symbol instanceof MarkerLineSymbol) { + sreader = new MarkerLineSymbolReader(symbol); + } + else if(symbol instanceof PictureLineSymbol) { + sreader = new PictureLineSymbolReader(symbol); + } + else if(symbol instanceof MultiLayerLineSymbol) { + sreader = new MultiLayerLineSymbolReader(symbol); + } + else if(symbol instanceof CartographicLineSymbol) { + sreader = new CartoLineSymbolReader(symbol); + } + else if(symbol instanceof HashLineSymbol) { + sreader = new HashLineSymbolReader(symbol); + } + else { + logger.debug("The reader for type " + symbol.getClass().toString() + + " is not implemented!"); + return parent; + } + } + catch(Exception e) { + logger.error( + "Could not read the symbol " + + symbol.getClass().toString()); + return parent; + } + } + else if(lineSymbol != null) { + try { + if(lineSymbol instanceof SimpleLineSymbol) { + sreader = new SimpleLineSymbolReader(lineSymbol); + } + else if(lineSymbol instanceof MarkerLineSymbol) { + sreader = new MarkerLineSymbolReader(lineSymbol); + } + else if(lineSymbol instanceof PictureLineSymbol) { + sreader = new PictureLineSymbolReader(lineSymbol); + } + else if(lineSymbol instanceof MultiLayerLineSymbol) { + sreader = new MultiLayerLineSymbolReader(lineSymbol); + } + else if(lineSymbol instanceof CartographicLineSymbol) { + sreader = new CartoLineSymbolReader(lineSymbol); + } + else if(lineSymbol instanceof HashLineSymbol) { + sreader = new HashLineSymbolReader(lineSymbol); + } + else { + logger.debug("The reader for type " + + lineSymbol.getClass().toString() + + " is not implemented!"); + return parent; + } + } + catch(Exception e) { + logger.error( + "Could not read the symbol " + + symbol.getClass().toString()); + return parent; + } + } + else { + return parent; + } + if (sreader != null) { + sreader.setParent(parent); + sreader.setUtil(util); + sreader.read(); + } + return parent; + } + + public void setSymbol(ISymbol sym) { + this.symbol = sym; + this.lineSymbol = null; + } + + public void setSymbol(ILineSymbol sym) { + this.lineSymbol = sym; + this.symbol = null; + } + + public boolean canRead(ISymbol sym) { + if(sym instanceof SimpleLineSymbol || + sym instanceof MarkerLineSymbol || + sym instanceof PictureLineSymbol || + sym instanceof MultiLayerLineSymbol || + sym instanceof CartographicLineSymbol || + sym instanceof HashLineSymbol) { + return true; + } + else { + return false; + } + } + + public boolean canRead(ILineSymbol sym) { + if(sym instanceof SimpleLineSymbol || + sym instanceof MarkerLineSymbol || + sym instanceof PictureLineSymbol || + sym instanceof MultiLayerLineSymbol || + sym instanceof CartographicLineSymbol || + sym instanceof HashLineSymbol) { + return true; + } + else { + return false; + } + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/MXDReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,215 @@ +package de.intevation.mxd.reader; + +import java.io.IOException; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.carto.ILayer; +import com.esri.arcgis.carto.IMap; +import com.esri.arcgis.carto.MapDocument; +import com.esri.arcgis.carto.FeatureLayer; +import com.esri.arcgis.carto.GdbRasterCatalogLayer; +import com.esri.arcgis.carto.IFeatureRenderer; +import com.esri.arcgis.carto.SimpleRenderer; +import com.esri.arcgis.carto.ClassBreaksRenderer; +import com.esri.arcgis.carto.UniqueValueRenderer; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import de.intevation.mxd.ArcGISInitializer; +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * The MXD file reader. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MXDReader +implements IReader { + /** + * The Logger. + */ + private static final Logger logger = Logger.getLogger(MXDReader.class); + + /** + * Private member. + */ + private String filename = ""; + private ArcGISInitializer initializer = null; + private MapToXMLUtils util; + private IMap map; + private int invalidLayerCount; + + public MXDReader() + throws IOException { + logger.debug("constructor()"); + initializer = new ArcGISInitializer(); + util = new MapToXMLUtils(); + invalidLayerCount = 0; + } + + + /** + * Initialize the ArcGIS Objects. + */ + public boolean init() + throws IOException { + logger.debug("init()"); + if(!initializer.initArcGIS()) { + return false; + } + if(!initializer.initArcGISLicenses()) { + return false; + } + return true; + } + + /** + * Shutdown the ArcGIS Objects. + */ + public boolean shutdown() + throws IOException { + logger.debug("shutdown()"); + if(initializer == null) { + throw new IOException("Faild to shutdown!"); + } + else { + initializer.shutdownArcGIS(); + return true; + } + } + + /** + * Set the path and filename to the MXD-File. + */ + public void setFilename(String name) { + logger.debug("setFilename()"); + filename = name; + } + + + private void openMapDocument() + throws IOException { + MapDocument m = new MapDocument(); + if(!m.isMapDocument(filename)) { + throw new IOException(filename + " is not a map!"); + } + m.open(filename, null); + map = m.getMap(0); + } + + /** + * Read the MXD file content. + */ + public boolean read() + throws Exception { + logger.debug("read()"); + if(filename == "") { + throw new IOException("Please set filename!"); + } + else { + util.addFilename(filename); + openMapDocument(); + MapReader mreader; + try { + mreader = new MapReader (map); + mreader.setUtil(util); + mreader.read(); + + } + catch(Exception e) { + throw e; + } + + for(int i = 0; i < map.getLayerCount();i++) { + ILayer layer = map.getLayer(i); + try { + if (layer instanceof FeatureLayer) { + FeatureLayerReader lr = new FeatureLayerReader(layer); + lr.setUtil(util); + Element layerElement = lr.read(); + if (layerElement == null) { + continue; + } + IFeatureRenderer renderer = + ((FeatureLayer)layer).getRenderer(); + IRendererReader rreader; + if(renderer instanceof SimpleRenderer) { + rreader = new SimpleRendererReader(renderer); + rreader.setParent(layerElement); + rreader.setUtil(util); + rreader.read(); + } + else if(renderer instanceof ClassBreaksRenderer) { + rreader = new ClassBreakRendererReader(renderer); + rreader.setParent(layerElement); + rreader.setUtil(util); + rreader.read(); + } + else if(renderer instanceof UniqueValueRenderer) { + rreader = new UniqueValueRendererReader(renderer); + rreader.setParent(layerElement); + rreader.setUtil(util); + rreader.read(); + } + else{ + logger.debug("Not a known renderer type " + + renderer.getClass().toString()); + } + } + else if(layer instanceof GdbRasterCatalogLayer) { + GdbRasterCatalogLayerReader gclr = + new GdbRasterCatalogLayerReader(layer); + gclr.setUtil(util); + Element layerElement = gclr.read(); + IFeatureRenderer renderer = + ((GdbRasterCatalogLayer)layer).getRenderer(); + IRendererReader rreader; + if(renderer instanceof SimpleRenderer) { + rreader = new SimpleRendererReader(renderer); + rreader.setParent(layerElement); + rreader.setUtil(util); + rreader.read(); + } + else if(renderer instanceof ClassBreaksRenderer) { + rreader = new ClassBreakRendererReader(renderer); + rreader.setParent(layerElement); + rreader.setUtil(util); + rreader.read(); + } + else if(renderer instanceof UniqueValueRenderer) { + rreader = new UniqueValueRendererReader(renderer); + rreader.setParent(layerElement); + rreader.setUtil(util); + rreader.read(); + } + else { + logger.debug("Not a known renderer type " + + renderer.getClass().toString()); + } + } + } + catch(Exception e) { + invalidLayerCount++; + if(i == 0 && (i + 1) == map.getLayerCount() || + invalidLayerCount == map.getLayerCount()) { + throw new IOException( + "No valid layer in MXD file." + + " Aborting."); + } + } + } + } + return true; + } + + /** + * Get the root DOM document. + */ + public Document getMapDocument() { + logger.debug("getMapDocument()"); + return util.getDocument(); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/MapReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,197 @@ +package de.intevation.mxd.reader; + +import java.io.IOException; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.carto.IMap; +import com.esri.arcgis.carto.Map; +import com.esri.arcgis.geometry.ISpatialReference; +import com.esri.arcgis.geometry.ProjectedCoordinateSystem; +import com.esri.arcgis.geometry.GeographicCoordinateSystem; +import com.esri.arcgis.geometry.UnknownCoordinateSystem; +import com.esri.arcgis.geometry.Projection; +import com.esri.arcgis.geometry.IEnvelope; + +import org.w3c.dom.Element; + +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * Reads map information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MapReader { + /** + * The Logger. + */ + private static final Logger logger = Logger.getLogger(MapReader.class); + + /** + * Private member. + */ + private Map map; + private MapToXMLUtils util; + + + public MapReader(IMap map) + throws Exception { + logger.debug("constructor()"); + if(map instanceof Map) { + this.map = (Map)map; + } + else { + throw new Exception("Not an instance of \"Map\"!"); + } + } + + /** + * Reads the Map attributes. + */ + public void read() + throws IOException { + logger.debug("read()"); + if(util == null) { + throw new IOException("Can not write to document."); + } + + //Create XML Element for map. + Element mapElement; + try{ + mapElement = util.createMap(); + } + catch(Exception e){ + logger.error("Could not create DOM element. Aborting."); + throw new IOException("Error creating DOM element."); + } + + //Read map name. + try { + mapElement.setAttribute("name", map.getName()); + } + catch(IOException ioe) { + logger.warn( + "Could not read map name." + + " Setting map name to \"default-map\""); + mapElement.setAttribute("name", "default-map"); + } + + //Read map extent. + try { + IEnvelope ext = map.getExtent(); + mapElement.setAttribute( + "extent_max_x", + String.valueOf(ext.getXMax())); + mapElement.setAttribute( + "extent_max_y", + String.valueOf(ext.getYMax())); + mapElement.setAttribute( + "extent_min_x", + String.valueOf(ext.getXMin())); + mapElement.setAttribute( + "extent_min_y", + String.valueOf(ext.getYMin())); + } + catch(IOException ioe) { + logger.warn("Could not read map extend. Setting to 0, 0, 0, 0."); + mapElement.setAttribute("extend_max_x", "0"); + mapElement.setAttribute("extend_min_x", "0"); + mapElement.setAttribute("extend_max_y", "0"); + mapElement.setAttribute("extend_min_y", "0"); + } + + //Read map units. + int units = 0; + try { + units = map.getMapUnits(); + } + catch(IOException ioe) { + logger.warn( + "Could not read map units." + + " Setting map units to unknown."); + units = 0; + } + + String s_units; + switch(units) { + case 1: s_units = "inches"; break; + case 2: s_units = "points"; break; + case 3: s_units = "feet"; break; + case 4: s_units = "yards"; break; + case 5: s_units = "miles"; break; + case 6: s_units = "nauticalmiles"; break; + case 7: s_units = "millimeters"; break; + case 8: s_units = "centimeters"; break; + case 9: s_units = "meters"; break; + case 10: s_units = "kilometers"; break; + case 11: s_units = "degree"; break; + case 12: s_units = "decimeters"; break; + case 13: s_units = "units_last"; break; + default : s_units = "unknown"; break; + } + mapElement.setAttribute("units", s_units); + + if(units == 0) { + logger.warn( + "Unknown units." + + " Please edit units in resulting mapfile."); + } + + //TODO: Find out whats the correct scale value. + try { + mapElement.setAttribute( + "scale", + String.valueOf(map.getMaxScale())); + } + catch(IOException ioe) { + logger.warn("Could not read map scale. Setting map scale to 1000"); + mapElement.setAttribute("scale", "1000"); + } + + //Read the projection. + try { + ISpatialReference sr = map.getSpatialReference(); + String projection = ""; + if(sr instanceof ProjectedCoordinateSystem) { + ProjectedCoordinateSystem pcs = (ProjectedCoordinateSystem)sr; + Projection p = (Projection)pcs.getProjection(); + projection = p.getName(); + } + else if(sr instanceof GeographicCoordinateSystem) { + GeographicCoordinateSystem gcs = (GeographicCoordinateSystem)sr; + projection = gcs.getName(); + } + else if(sr instanceof UnknownCoordinateSystem) { + UnknownCoordinateSystem ucs = (UnknownCoordinateSystem)sr; + projection = ucs.getName(); + } + else{ + logger.debug( + "Unknown SpatialReference: " + + sr.getClass().toString()); + } + + if(projection.equals("Unknown")) { + logger.warn( + "Unknown projection." + + " Please edit projection in resulting mapfile."); + } + mapElement.setAttribute("projection", projection); + } + catch(IOException ioe) { + logger.warn( + "Could not read map projection." + + " Setting map projection to unknown."); + mapElement.setAttribute("projection", "Unknown"); + } + } + + /** + * Set the utilities. + */ + public void setUtil(MapToXMLUtils util) { + this.util = util; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/MarkerFillSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,209 @@ +package de.intevation.mxd.reader; + +import java.awt.Color; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IFillSymbol; +import com.esri.arcgis.display.ILineSymbol; +import com.esri.arcgis.display.IMarkerSymbol; +import com.esri.arcgis.display.MarkerFillSymbol; +import com.esri.arcgis.display.esriSimpleFillStyle; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; + +import org.w3c.dom.Element; +import java.io.IOException; + +/** + * Reads marker line symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MarkerFillSymbolReader +extends AbstractSymbolReader{ + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(MarkerFillSymbolReader.class); + + /** + * Private member. + */ + private MarkerFillSymbol symbol; + + public MarkerFillSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MarkerFillSymbol) { + this.symbol = (MarkerFillSymbol)symbol; + } + else { + throw new Exception("Not a MarkerFillSymbol!"); + } + } + + + public MarkerFillSymbolReader(IFillSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MarkerFillSymbol) { + this.symbol = (MarkerFillSymbol)symbol; + } + else { + throw new Exception("Not a MarkerFillSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + + Element symbolElement = util.addSymbol(parent); + + try { + symbolElement.setAttribute("name", symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\"."); + symbolElement.setAttribute("name", "default"); + } + symbolElement.setAttribute("style", "fill"); + + try { + symbolElement.setAttribute( + "xoffset", + String.valueOf(symbol.getXOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read x-offset."); + } + + try { + symbolElement.setAttribute( + "yoffset", + String.valueOf(symbol.getYOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read y-offset."); + } + + try { + symbolElement.setAttribute( + "xseparation", + String.valueOf(symbol.getXSeparation())); + } + catch(IOException ioe) { + logger.warn("Could not read x-separation."); + } + + try { + symbolElement.setAttribute( + "yseparation", + String.valueOf(symbol.getYSeparation())); + } + catch(IOException ioe) { + logger.warn( + "Could not read y-separation."); + } + + int style; + try { + style = symbol.getStyle(); + } + catch(IOException ioe) { + logger.warn("Could not read style."); + style = -1; + } + switch(style) { + case esriSimpleFillStyle.esriSFSCross: + symbolElement.setAttribute("fillstyle", "cross"); break; + case esriSimpleFillStyle.esriSFSSolid: + symbolElement.setAttribute("fillstyle", "solid"); break; + case esriSimpleFillStyle.esriSFSVertical: + symbolElement.setAttribute("fillstyle", "vertical"); break; + case esriSimpleFillStyle.esriSFSHorizontal: + symbolElement.setAttribute("fillstyle", "horizontal"); break; + case esriSimpleFillStyle.esriSFSForwardDiagonal: + symbolElement.setAttribute("fillstyle", "fwdiagonal"); break; + case esriSimpleFillStyle.esriSFSBackwardDiagonal: + symbolElement.setAttribute("fillstyle", "bwdiagonal"); break; + case esriSimpleFillStyle.esriSFSDiagonalCross: + symbolElement.setAttribute("fillstyle", "diagonalcross"); + break; + default: break; + } + + try { + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(color.getTransparency())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(col.getTransparency())); + } + } + catch(IOException ioe) { + logger.warn("Could not read color."); + } + + try { + ILineSymbol ls = symbol.getOutline(); + LineSymbolReader lsr = new LineSymbolReader(); + if(lsr.canRead(ls)) { + lsr.setSymbol(ls); + lsr.setUtil(util); + lsr.setParent(symbolElement); + lsr.read(); + } + else { + logger.debug("The type of " + ls.getClass().toString() + + " is not implemented!"); + } + } + catch(Exception e) { + logger.warn("Could not read outline."); + } + + try { + IMarkerSymbol sym = symbol.getMarkerSymbol(); + MarkerSymbolReader msr = new MarkerSymbolReader(); + if(msr.canRead(sym)) { + msr.setSymbol(sym); + msr.setParent(symbolElement); + msr.setUtil(util); + msr.read(); + } + else { + logger.debug("The type of " + sym.getClass().toString() + + " is not implemented!"); + } + } + catch(Exception e) { + logger.warn("Could not read marker symbol."); + } + return parent; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/MarkerLineSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,82 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.ILineSymbol; +import com.esri.arcgis.display.IMarkerSymbol; +import com.esri.arcgis.display.MarkerLineSymbol; +import com.esri.arcgis.display.MultiLayerMarkerSymbol; + +import org.w3c.dom.Element; + +/** + * Reads marker line symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MarkerLineSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(MarkerLineSymbolReader.class); + + /** + * Private member. + */ + private MarkerLineSymbol symbol; + + public MarkerLineSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MarkerLineSymbol) { + this.symbol = (MarkerLineSymbol)symbol; + } + else { + throw new Exception("Not a MarkerLineSymbol!"); + } + } + + public MarkerLineSymbolReader(ILineSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MarkerLineSymbol) { + this.symbol = (MarkerLineSymbol)symbol; + } + else { + throw new Exception("Not a MarkerLineSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + try { + IMarkerSymbol sym = symbol.getMarkerSymbol(); + if(sym instanceof MultiLayerMarkerSymbol) { + ISymbolReader sreader = new MultiLayerMarkerSymbolReader(sym); + sreader.setParent(parent); + sreader.setUtil(util); + sreader.read(); + } + else { + logger.debug("The type of " + sym.getClass().toString() + + " is not implemented!"); + } + } + catch(Exception e) { + logger.error( + "Could not read the symbol " + + symbol.getClass().toString()); + } + return parent; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/MarkerSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,164 @@ +package de.intevation.mxd.reader; + +import java.lang.Exception; + +import org.w3c.dom.Element; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IMarkerSymbol; +import com.esri.arcgis.display.SimpleMarkerSymbol; +import com.esri.arcgis.display.ArrowMarkerSymbol; +import com.esri.arcgis.display.CharacterMarkerSymbol; +import com.esri.arcgis.display.PictureMarkerSymbol; +import com.esri.arcgis.display.MultiLayerMarkerSymbol; + +/** + * Wrapper for marker symbol reader. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MarkerSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(MarkerSymbolReader.class); + + private ISymbol symbol; + private IMarkerSymbol markerSymbol; + + public MarkerSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor(ISymbol)"); + this.symbol = symbol; + this.markerSymbol = null; + } + + public MarkerSymbolReader(IMarkerSymbol symbol) + throws Exception { + logger.debug("contructor(ISymbol)"); + this.markerSymbol = symbol; + this.symbol = null; + } + + public MarkerSymbolReader() { + logger.debug("contructor()"); + this.symbol = null; + this.markerSymbol = null; + } + + public Element read() { + logger.debug("read()"); + ISymbolReader sreader = null; + + if(symbol != null) { + try { + if(symbol instanceof SimpleMarkerSymbol) { + sreader = new SimpleMarkerSymbolReader(symbol); + } + else if(symbol instanceof ArrowMarkerSymbol) { + sreader = new ArrowMarkerSymbolReader(symbol); + } + else if(symbol instanceof CharacterMarkerSymbol) { + sreader = new CharacterMarkerSymbolReader(symbol); + } + else if(symbol instanceof PictureMarkerSymbol) { + sreader = new PictureMarkerSymbolReader(symbol); + } + else if(symbol instanceof MultiLayerMarkerSymbol) { + sreader = new MultiLayerMarkerSymbolReader(symbol); + } + else { + logger.debug("The reader for type " + symbol.getClass().toString() + + " is not implemented!"); + return parent; + } + } + catch(Exception e) { + logger.error( + "Could not read the symbol " + + symbol.getClass().toString()); + return parent; + + } + } + else if(markerSymbol != null) { + try { + if(markerSymbol instanceof SimpleMarkerSymbol) { + sreader = new SimpleMarkerSymbolReader(markerSymbol); + } + else if(markerSymbol instanceof ArrowMarkerSymbol) { + sreader = new ArrowMarkerSymbolReader(markerSymbol); + } + else if(markerSymbol instanceof CharacterMarkerSymbol) { + sreader = new CharacterMarkerSymbolReader(markerSymbol); + } + else if(markerSymbol instanceof PictureMarkerSymbol) { + sreader = new PictureMarkerSymbolReader(markerSymbol); + } + else if(markerSymbol instanceof MultiLayerMarkerSymbol) { + sreader = new MultiLayerMarkerSymbolReader(markerSymbol); + } + else { + logger.debug("The reader for type " + symbol.getClass().toString() + + " is not implemented!"); + return parent; + } + } + catch(Exception e) { + logger.error( + "Could not read the symbol " + + symbol.getClass().toString()); + return parent; + + } + } + if (sreader != null) { + sreader.setParent(parent); + sreader.setUtil(util); + sreader.read(); + } + return parent; + } + + public void setSymbol(ISymbol sym) { + this.symbol = sym; + this.markerSymbol = null; + } + + public void setSymbol(IMarkerSymbol sym) { + this.markerSymbol = sym; + this.symbol = null; + } + + public boolean canRead(ISymbol sym) { + if(sym instanceof SimpleMarkerSymbol || + sym instanceof ArrowMarkerSymbol || + sym instanceof PictureMarkerSymbol || + sym instanceof CharacterMarkerSymbol || + sym instanceof MultiLayerMarkerSymbol) { + return true; + } + else { + return false; + } + } + + public boolean canRead(IMarkerSymbol sym) { + if(sym instanceof SimpleMarkerSymbol || + sym instanceof ArrowMarkerSymbol || + sym instanceof PictureMarkerSymbol || + sym instanceof CharacterMarkerSymbol || + sym instanceof MultiLayerMarkerSymbol) { + return true; + } + else { + return false; + } + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/MultiLayerFillSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,85 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IFillSymbol; +import com.esri.arcgis.display.MultiLayerFillSymbol; + +import org.w3c.dom.Element; + +/** + * Reads multi layer line symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MultiLayerFillSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(MultiLayerFillSymbolReader.class); + + /** + * Private member. + */ + private MultiLayerFillSymbol symbol; + + public MultiLayerFillSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MultiLayerFillSymbol) { + this.symbol = (MultiLayerFillSymbol)symbol; + } + else { + throw new Exception("Not a MultiLayerFillSymbol!"); + } + } + + + public MultiLayerFillSymbolReader(IFillSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MultiLayerFillSymbol) { + this.symbol = (MultiLayerFillSymbol)symbol; + } + else { + throw new Exception("Not a MultiLayerFillSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + try { + for(int i = 0; i < symbol.getLayerCount(); i++) { + ISymbol sym = (ISymbol)symbol.getLayer(i); + + FillSymbolReader fsr = new FillSymbolReader(); + if(fsr.canRead(sym)) { + fsr.setSymbol(sym); + fsr.setParent(parent); + fsr.setUtil(util); + fsr.read(); + } + else { + logger.debug("The type of " + sym.getClass().toString() + + " is not implemented!"); + } + } + } + catch(Exception e) { + logger.error( + "Could not read the symbol " + + symbol.getClass().toString()); + } + return parent; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/MultiLayerLineSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,76 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.ILineSymbol; +import com.esri.arcgis.display.MultiLayerLineSymbol; + +import org.w3c.dom.Element; + +/** + * Reads multi layer line symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MultiLayerLineSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(MultiLayerLineSymbolReader.class); + + /** + * Private member. + */ + private MultiLayerLineSymbol symbol; + + public MultiLayerLineSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MultiLayerLineSymbol) { + this.symbol = (MultiLayerLineSymbol)symbol; + } + else { + throw new Exception("Not a MultiLayerLineSymbol!"); + } + } + + public MultiLayerLineSymbolReader(ILineSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MultiLayerLineSymbol) { + this.symbol = (MultiLayerLineSymbol)symbol; + } + else { + throw new Exception("Not a MultiLayerLineSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + try { + for(int i = 0; i < symbol.getLayerCount(); i++) { + ISymbol sym = (ISymbol)symbol.getLayer(i); + ISymbolReader sreader = new LineSymbolReader(sym); + sreader.setParent(parent); + sreader.setUtil(util); + sreader.read(); + } + } + catch(Exception e) { + logger.error( + "Could not read the symbol " + + symbol.getClass().toString()); + } + return parent; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,76 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IMarkerSymbol; +import com.esri.arcgis.display.MultiLayerMarkerSymbol; + +import org.w3c.dom.Element; + +/** + * Reads multi layer marker symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MultiLayerMarkerSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(MultiLayerMarkerSymbolReader.class); + + /** + * Private member. + */ + private MultiLayerMarkerSymbol symbol; + + public MultiLayerMarkerSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MultiLayerMarkerSymbol) { + this.symbol = (MultiLayerMarkerSymbol)symbol; + } + else { + throw new Exception("Not a MultiLayerMarkerSymbol!"); + } + } + + public MultiLayerMarkerSymbolReader(IMarkerSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MultiLayerMarkerSymbol) { + this.symbol = (MultiLayerMarkerSymbol)symbol; + } + else { + throw new Exception("Not a MultiLayerMarkerSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + try { + for(int i = 0; i < symbol.getLayerCount(); i++) { + ISymbol sym = (ISymbol)symbol.getLayer(i); + ISymbolReader sreader = new MarkerSymbolReader(sym); + sreader.setParent(parent); + sreader.setUtil(util); + sreader.read(); + } + } + catch(Exception e) { + logger.error( + "Could not read symbol " + + symbol.getClass().toString()); + } + return parent; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/PictureLineSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,143 @@ +package de.intevation.mxd.reader; + +import java.awt.Color; +import java.awt.Image; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.ILineSymbol; +import com.esri.arcgis.display.PictureLineSymbol; +import com.esri.arcgis.support.ms.stdole.Picture; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; + +import org.w3c.dom.Element; +import java.io.IOException; + +/** + * Reads picture line symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class PictureLineSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(SimpleLineSymbolReader.class); + + /** + * Private member. + */ + private PictureLineSymbol symbol; + + public PictureLineSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof PictureLineSymbol) { + this.symbol = (PictureLineSymbol)symbol; + } + else { + throw new Exception("Not a PictureLineSymbol!"); + } + } + + public PictureLineSymbolReader(ILineSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof PictureLineSymbol) { + this.symbol = (PictureLineSymbol)symbol; + } + else { + throw new Exception("Not a PictureLineSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + //TODO Read the picture from mxd and write it as base64 string to the + // XML Element. + logger.debug("read()"); + Element symbolElement = util.addSymbol(parent); + + try { + symbolElement.setAttribute("name", symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\""); + symbolElement.setAttribute("name", "default"); + } + + try { + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + } + } + catch(IOException ioe) { + logger.warn("Could not read color."); + } + + try { + symbolElement.setAttribute( + "offset", + String.valueOf(symbol.getOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read offset."); + } + + try { + symbolElement.setAttribute( + "x_scale", + String.valueOf(symbol.getXScale())); + } + catch(IOException ioe) { + logger.warn("Could not read x-scale."); + } + + try { + symbolElement.setAttribute( + "y_scale", + String.valueOf(symbol.getYScale())); + } + catch(IOException ioe) { + logger.warn("Could not read y-scale."); + } + + try { + symbolElement.setAttribute( + "width", + String.valueOf(symbol.getWidth())); + } + catch(IOException ioe) { + logger.warn("Could not read width."); + } + + symbolElement.setAttribute("type", "line"); + symbolElement.setAttribute("style", "picture"); + + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/PictureMarkerSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,124 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IMarkerSymbol; +import com.esri.arcgis.display.PictureMarkerSymbol; +import com.esri.arcgis.carto.PictureElement; + +import org.w3c.dom.Element; +import java.io.IOException; + +/** + * Reads picture marker symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class PictureMarkerSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(PictureMarkerSymbolReader.class); + + /** + * Private member. + */ + private PictureMarkerSymbol symbol; + + public PictureMarkerSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof PictureMarkerSymbol) { + this.symbol = (PictureMarkerSymbol)symbol; + } + else { + throw new Exception("Not a PictureMarkerSymbol!"); + } + } + + public PictureMarkerSymbolReader(IMarkerSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof PictureMarkerSymbol) { + this.symbol = (PictureMarkerSymbol)symbol; + } + else { + throw new Exception("Not a PictureMarkerSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + //TODO Read the picture from mxd and write it as base64 string to the + // XML Element. + logger.debug("read()"); + Element symbolElement = util.addSymbol(parent); + + try { + symbolElement.setAttribute( + "angle", + String.valueOf(symbol.getAngle())); + } + catch(IOException ioe) { + logger.warn("Could not read angle."); + } + + try { + symbolElement.setAttribute( + "size", + String.valueOf(symbol.getSize())); + } + catch (IOException ioe) { + logger.warn("Could not read size. Setting size to 1."); + symbolElement.setAttribute("size", "1"); + } + + try { + symbolElement.setAttribute( + "x_offset", + String.valueOf(symbol.getXOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read x-offset."); + } + + try { + symbolElement.setAttribute( + "y_offset", + String.valueOf(symbol.getYOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read y-offset."); + } + + try { + symbolElement.setAttribute( + "name", + symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\""); + symbolElement.setAttribute("name", "default"); + } + + try { + PictureElement pElem = new PictureElement(); + pElem.importPicture(symbol.getPicture()); + } + catch(IOException ioe) { + logger.warn("Could not read picture."); + } + symbolElement.setAttribute("style", "picture"); + symbolElement.setAttribute("type", "marker"); + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,151 @@ +package de.intevation.mxd.reader; + +import java.awt.Color; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.ILineSymbol; +import com.esri.arcgis.display.IFillSymbol; +import com.esri.arcgis.display.SimpleFillSymbol; +import com.esri.arcgis.display.esriSimpleFillStyle; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; + +import org.w3c.dom.Element; +import java.io.IOException; + +/** + * Reads simple marker symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class SimpleFillSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(SimpleFillSymbolReader.class); + + /** + * Private member. + */ + private SimpleFillSymbol symbol; + + public SimpleFillSymbolReader(ISymbol symbol) throws Exception{ + logger.debug("contructor(ISymbol)"); + if(symbol instanceof SimpleFillSymbol) { + this.symbol = (SimpleFillSymbol)symbol; + } + else { + throw new Exception("Not a SimpleFillSymbol!"); + } + } + + public SimpleFillSymbolReader(IFillSymbol symbol) throws Exception{ + logger.debug("contructor(IFillSymbol)"); + if(symbol instanceof SimpleFillSymbol) { + this.symbol = (SimpleFillSymbol)symbol; + } + else { + throw new Exception("Not a SimpleFillSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + Element symbolElement = util.addSymbol(parent); + + try { + symbolElement.setAttribute("name", symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\""); + symbolElement.setAttribute("name", "default"); + } + symbolElement.setAttribute("style", "fill"); + int style; + try { + style = symbol.getStyle(); + } + catch(IOException ioe) { + logger.warn( + "Could not read fill style."); + style = -1; + } + + switch(style) { + case esriSimpleFillStyle.esriSFSCross: + symbolElement.setAttribute("fillstyle", "cross"); break; + case esriSimpleFillStyle.esriSFSSolid: + symbolElement.setAttribute("fillstyle", "solid"); break; + case esriSimpleFillStyle.esriSFSVertical: + symbolElement.setAttribute("fillstyle", "vertical"); break; + case esriSimpleFillStyle.esriSFSHorizontal: + symbolElement.setAttribute("fillstyle", "horizontal"); break; + case esriSimpleFillStyle.esriSFSForwardDiagonal: + symbolElement.setAttribute("fillstyle", "fwdiagonal"); break; + case esriSimpleFillStyle.esriSFSBackwardDiagonal: + symbolElement.setAttribute("fillstyle", "bwdiagonal"); break; + case esriSimpleFillStyle.esriSFSDiagonalCross: + symbolElement.setAttribute("fillstyle", "diagonalcross"); + break; + default: break; + } + + try { + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(color.getTransparency())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(col.getTransparency())); + } + } + catch(IOException ioe) { + logger.warn("Could not read color."); + } + + try { + ILineSymbol ls = symbol.getOutline(); + LineSymbolReader lsr = new LineSymbolReader(); + if(lsr.canRead(ls)) { + lsr.setSymbol(ls); + lsr.setUtil(util); + lsr.setParent(symbolElement); + lsr.read(); + } + else { + logger.debug("The type of " + ls.getClass().toString() + + " is not implemented!"); + } + } + catch(Exception e) { + logger.warn("Could not read line symbol."); + } + + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/SimpleLineSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,133 @@ +package de.intevation.mxd.reader; + +import java.awt.Color; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.ILineSymbol; +import com.esri.arcgis.display.SimpleLineSymbol; +import com.esri.arcgis.display.esriSimpleLineStyle; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; + +import org.w3c.dom.Element; +import java.io.IOException; + +/** + * Reads simple line symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class SimpleLineSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(SimpleLineSymbolReader.class); + + /** + * Private member. + */ + private SimpleLineSymbol symbol; + + public SimpleLineSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof SimpleLineSymbol) { + this.symbol = (SimpleLineSymbol)symbol; + } + else { + throw new Exception("Not a SimpleLineSymbol!"); + } + } + + public SimpleLineSymbolReader(ILineSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof SimpleLineSymbol) { + this.symbol = (SimpleLineSymbol)symbol; + } + else { + throw new Exception("Not a SimpleLineSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + Element symbolElement = util.addSymbol(parent); + + try { + symbolElement.setAttribute("name", symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\""); + symbolElement.setAttribute("name", "default"); + } + + try { + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + } + } + catch(IOException ioe) { + logger.warn("Could not read color."); + } + + try { + symbolElement.setAttribute("width", String.valueOf(symbol.getWidth())); + } + catch(IOException ioe) { + logger.warn("Could not read width."); + } + + int style; + try { + style = symbol.getStyle(); + } + catch(IOException ioe) { + logger.warn("Could not read line style."); + style = -1; + } + switch(style) { + case esriSimpleLineStyle.esriSLSSolid: + symbolElement.setAttribute("linestyle", "solid"); break; + case esriSimpleLineStyle.esriSLSDash: + symbolElement.setAttribute("linestyle", "dash"); break; + case esriSimpleLineStyle.esriSLSDot: + symbolElement.setAttribute("linestyle", "dot"); break; + case esriSimpleLineStyle.esriSLSDashDot: + symbolElement.setAttribute("linestyle", "dashdot"); break; + case esriSimpleLineStyle.esriSLSDashDotDot: + symbolElement.setAttribute("linestyle", "dashdotdot"); break; + default: break; + } + + symbolElement.setAttribute("type", "line"); + symbolElement.setAttribute("style", "simple"); + + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/SimpleMarkerSymbolReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,183 @@ +package de.intevation.mxd.reader; + +import java.awt.Color; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IMarkerSymbol; +import com.esri.arcgis.display.SimpleMarkerSymbol; +import com.esri.arcgis.display.esriSimpleMarkerStyle; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; + +import org.w3c.dom.Element; +import java.io.IOException; + +/** + * Reads simple marker symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class SimpleMarkerSymbolReader +extends AbstractSymbolReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(SimpleMarkerSymbolReader.class); + + /** + * Private member. + */ + private SimpleMarkerSymbol symbol; + + public SimpleMarkerSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof SimpleMarkerSymbol) { + this.symbol = (SimpleMarkerSymbol)symbol; + } + else { + throw new Exception("Not a SimpleMarkerSymbol!"); + } + } + + public SimpleMarkerSymbolReader(IMarkerSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof SimpleMarkerSymbol) { + this.symbol = (SimpleMarkerSymbol)symbol; + } + else { + throw new Exception("Not a SimpleMarkerSymbol!"); + } + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + Element symbolElement = util.addSymbol(parent); + + try { + symbolElement.setAttribute("name", symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\"."); + symbolElement.setAttribute("name", "default"); + } + + try { + if(symbol.getStyle() == esriSimpleMarkerStyle.esriSMSCircle) + symbolElement.setAttribute("style", "point"); + } + catch(IOException ioe) { + logger.warn("Could not read marker style."); + } + + try { + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(color.getTransparency())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute("color", String.valueOf(c.getRGB())); + symbolElement.setAttribute("transparency", + String.valueOf(col.getTransparency())); + } + } + catch(IOException ioe) { + logger.warn("Could not read color."); + } + + try { + symbolElement.setAttribute( + "size", + String.valueOf(symbol.getSize())); + } + catch(IOException ioe) { + logger.warn("Could not read size. Setting size to 1."); + symbolElement.setAttribute("size", "1"); + } + + try { + symbolElement.setAttribute( + "outline_size", + String.valueOf(symbol.getOutlineSize())); + } + catch(IOException ioe) { + logger.warn( + "Could not read outline size."); + } + + try { + if(symbol.getOutlineColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getOutlineColor(); + Color c = new Color ( + color.getRed(), + color.getGreen(), + color.getBlue()); + symbolElement.setAttribute( + "outline_color", + String.valueOf(c.getRGB())); + symbolElement.setAttribute("outline_transparency", + String.valueOf(color.getTransparency())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getOutlineColor().getRGB()); + Color c = new Color ( + col.getRed(), + col.getGreen(), + col.getBlue()); + symbolElement.setAttribute( + "outline_color", + String.valueOf(c.getRGB())); + symbolElement.setAttribute("outline_transparency", + String.valueOf(col.getTransparency())); + } + } + catch(IOException ioe) { + logger.warn("Could not read outline color."); + } + + try { + symbolElement.setAttribute( + "angle", + String.valueOf(symbol.getAngle())); + } + catch(IOException ioe) { + logger.warn("Could not read angle."); + } + + try { + symbolElement.setAttribute( + "offset", + symbol.getXOffset() + "," + symbol.getYOffset()); + } + catch(IOException ioe) { + logger.warn("Could not read offset."); + } + + symbolElement.setAttribute("type", "marker"); + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/SimpleRendererReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,131 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.carto.IFeatureRenderer; +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.carto.SimpleRenderer; + +import org.w3c.dom.Element; +import java.io.IOException; + +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * Reads simple renderer information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class SimpleRendererReader +implements IRendererReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(SimpleRendererReader.class); + + /** + * Private member. + */ + private ISymbol symbol; + private SimpleRenderer renderer; + private Element layer; + private MapToXMLUtils util; + + + public SimpleRendererReader(IFeatureRenderer renderer) + throws Exception { + logger.debug("constructor()"); + if(renderer instanceof SimpleRenderer) { + this.renderer = (SimpleRenderer)renderer; + } + else{ + throw new Exception ("Not an instance of SimpleRenderer!"); + } + } + + /** + * Setter for the parent XML element. + * + * @param parent The XML parent node. + */ + public void setParent(Element parent) { + this.layer = parent; + } + + /** + * Setter for the XML document helper. + * + * @param util The helper class for storing map information. + */ + public void setUtil(MapToXMLUtils util) { + this.util = util; + } + + /** + * Reads the renderer attributes. + * + * @return The XML node. + */ + public Element read() { + logger.debug("read()"); + Element rendererElement; + rendererElement = util.addRenderer(layer); + + try { + rendererElement.setAttribute("label", renderer.getLabel()); + } + catch(IOException ioe) { + logger.warn( + "Could not read label name." + + "Setting label name to \"default-label\""); + rendererElement.setAttribute("label", "default-label"); + } + + try { + rendererElement.setAttribute( + "description", + renderer.getDescription()); + } + catch(IOException ioe) { + logger.warn("Could not read description."); + } + + try { + symbol = renderer.getSymbol(); + + MarkerSymbolReader markerReader = new MarkerSymbolReader(); + LineSymbolReader lineReader = new LineSymbolReader(); + FillSymbolReader fillReader = new FillSymbolReader(); + if(markerReader.canRead(symbol)) { + markerReader.setSymbol(symbol); + markerReader.setUtil(util); + markerReader.setParent(rendererElement); + markerReader.read(); + } + else if(lineReader.canRead(symbol)) { + lineReader.setSymbol(symbol); + lineReader.setUtil(util); + lineReader.setParent(rendererElement); + lineReader.read(); + } + else if(fillReader.canRead(symbol)) { + fillReader.setSymbol(symbol); + fillReader.setUtil(util); + fillReader.setParent(rendererElement); + fillReader.read(); + } + else { + logger.debug( + "No known Symbol type: " + + symbol.getClass().toString()); + } + } + catch(Exception e) { + logger.error("Could not read symbol. Stopped reading renderer."); + } + return layer; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,157 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.carto.IFeatureRenderer; +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.carto.UniqueValueRenderer; + +import org.w3c.dom.Element; +import java.io.IOException; + +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * Reads unique vaule renderer information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class UniqueValueRendererReader +implements IRendererReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(FeatureLayerReader.class); + + /** + * Private Member. + */ + private UniqueValueRenderer renderer; + private Element layer; + private MapToXMLUtils util; + + + public UniqueValueRendererReader(IFeatureRenderer renderer) + throws Exception { + logger.debug("constructor()"); + if (renderer instanceof UniqueValueRenderer) { + this.renderer = (UniqueValueRenderer)renderer; + } + else { + throw new Exception ("Not an instance of UniqueValueRenderer."); + } + } + + /** + * Setter for the parent XML element. + * + * @param parent The XML parent node. + */ + public void setParent(Element parent) { + this.layer = parent; + } + + /** + * Setter for XML document helper. + * + * @param util The helper class for storing map information. + */ + public void setUtil(MapToXMLUtils util) { + this.util = util; + } + + /** + * Reads the renderer attributes. + * + * @return The parent XML node. + */ + public Element read() { + logger.debug("read()"); + int count = 0; + try { + count = renderer.getClassCount(); + } + catch(IOException ioe) { + logger.error( + "Could not read class count."+ + " Stopped reading renderer."); + return layer; + } + for(int i = 0; i < count - 1; i++) { + Element rendererElement = util.addRenderer(layer); + + try { + String value = renderer.getValue(i); + value = value.replaceAll(" ", ""); + if(value.indexOf(",") > 0) { + int j = 0; + while(value.indexOf(",") > 0) { + String v = value.substring(0, value.indexOf(",")); + rendererElement.setAttribute("value_" + j, v); + value = value.substring( + value.indexOf(",") + 1, + value.length()); + j++; + } + rendererElement.setAttribute("value_" + j, value); + } + else { + rendererElement.setAttribute("value", value); + } + + value = renderer.getValue(i); + rendererElement.setAttribute("name", renderer.esri_getClass(i)); + rendererElement.setAttribute("description", + renderer.getDescription(value)); + + rendererElement.setAttribute("label", renderer.getLabel(value)); + rendererElement.setAttribute( + "field_count", + String.valueOf(renderer.getFieldCount())); + for(int j = 0; j < renderer.getFieldCount(); j++) { + rendererElement.setAttribute( + "expression_field_" + j, + renderer.getField(j)); + } + rendererElement.setAttribute("expression_operator", "="); + + ISymbol sym = renderer.getSymbol(value); + MarkerSymbolReader markerReader = new MarkerSymbolReader(); + LineSymbolReader lineReader = new LineSymbolReader(); + FillSymbolReader fillReader = new FillSymbolReader(); + if(markerReader.canRead(sym)) { + markerReader.setSymbol(sym); + markerReader.setUtil(util); + markerReader.setParent(rendererElement); + markerReader.read(); + } + else if(lineReader.canRead(sym)) { + lineReader.setSymbol(sym); + lineReader.setUtil(util); + lineReader.setParent(rendererElement); + lineReader.read(); + } + else if(fillReader.canRead(sym)) { + fillReader.setSymbol(sym); + fillReader.setUtil(util); + fillReader.setParent(rendererElement); + fillReader.read(); + } + else { + logger.debug("Not a known symbol type: " + + sym.getClass().toString()); + } + } + catch(Exception e) { + logger.error( + "Could not read unique value data." + + e.toString()); + return layer; + } + } + return layer; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/utils/MapToXMLUtils.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2010 by Intevation GmbH + * + * This program is free software under the LGPL (>=v2.1) + * Read the file LGPL.txt coming with the software for details + * or visit http://www.gnu.org/licenses/ if it does not exist. + */ +package de.intevation.mxd.utils; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.w3c.dom.DOMException; + +/** + * Utility class to store map information in a XML structure. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MapToXMLUtils +{ + /** + * The logger. + */ + private static final Logger logger = Logger.getLogger(MapToXMLUtils.class); + + /** + * Private member. + */ + private Document root; + private Element rootElement; + private XMLUtils.ElementCreator creator; + + + public MapToXMLUtils() { + this.root = XMLUtils.newDocument(); + creator = new XMLUtils.ElementCreator(root, "", ""); + rootElement = creator.create("mxd"); + root.appendChild(rootElement); + } + + /** + * Add the mxd filename to the dom. + * @param path Path to the mxdfile. + * @return Currently always true. + */ + public boolean addFilename(String path) { + Element file = creator.create("file"); + file.setAttribute("name", path); + rootElement.appendChild(file); + return true; + } + + /** + * Create the top level map element. + * @return The new map element. + */ + public Element createMap() + throws Exception { + Element map; + NodeList list = root.getElementsByTagName("map"); + if(list == null || list.getLength() == 0){ + map = creator.create("map"); + rootElement.appendChild(map); + } + else if(list.getLength() == 1){ + map = (Element)list.item(0); + } + else{ + throw new Exception("Error while creating map node."); + } + return map; + } + + /** + * Add a layer element to the map. + * @param name The layer name. + * @return The layer element. + */ + public Element addLayer() + throws Exception { + Element node = creator.create("layer"); + NodeList list = root.getElementsByTagName("map"); + if(list == null || list.getLength() == 0){ + throw new Exception("No map node found!"); + } + else if(list.getLength() > 1) { + throw new Exception("Found more than one map node." + + " This should never happen!"); + } + else { + list.item(0).appendChild(node); + return node; + } + } + + /** + * Remove a layer element from map. + * @param name The layer name. + */ + public void removeLayer(Element layerElement) { + NodeList list = root.getElementsByTagName("map"); + if(list == null || list.getLength() == 0){ + return; + } + else if(list.getLength() > 1) { + return; + } + else { + try { + list.item(0).removeChild(layerElement); + } + catch(DOMException de) { + return; + } + } + } + + /** + * Add a renderer element to the map. + * @param layer The parent layer element. + * @return The renderer element. + */ + public Element addRenderer(Element layer) { + Element node = creator.create("renderer"); + layer.appendChild(node); + return node; + } + + /** + * Add a symbol element to the map. + * @param renderer The parent renderer element. + * @return The symbol element. + */ + public Element addSymbol(Element renderer) { + Element node = creator.create("symbol"); + renderer.appendChild(node); + return node; + } + + /** + * Print out the XML document. + */ + public void print() { + XMLUtils.toStream(root, System.out); + } + + /** + * Get the DOM document. + * @return The root document. + */ + public Document getDocument() { + return root; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/utils/XMLUtils.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,361 @@ +/* + * Copyright (c) 2010 by Intevation GmbH + * + * This program is free software under the LGPL (>=v2.1) + * Read the file LGPL.txt coming with the software for details + * or visit http://www.gnu.org/licenses/ if it does not exist. + */ + +package de.intevation.mxd.utils; + +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import javax.xml.namespace.NamespaceContext; +import javax.xml.namespace.QName; + +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.TransformerFactoryConfigurationError; + +import javax.xml.transform.dom.DOMSource; + +import javax.xml.transform.stream.StreamResult; + +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Attr; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import org.xml.sax.SAXException; + +/** + * Some helper functions to ease work with XML concering namespaces, XPATH + * and so on. + * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> + */ +public final class XMLUtils +{ + /** + * W3C URL of XForms + */ + public static final String XFORM_URL = "http://www.w3.org/2002/xforms"; + /** + * W3C prefix of XForms + */ + public static final String XFORM_PREFIX = "xform"; + + private static Logger logger = Logger.getLogger(XMLUtils.class); + + private XMLUtils() { + } + + /** + * Helper class to generate elements and attributes with + * namespaces. + */ + public static class ElementCreator + { + /** + * owner document of the elements to be created + */ + protected Document document; + /** + * namespace to be used + */ + protected String ns; + /** + * prefix to be used + */ + protected String prefix; + + /** + * Constructor to create an element/attribute creator + * with a given namespace and namespace prefix using a + * given owner document. + * @param document The owning document + * @param ns The namespace + * @param prefix The namespace prefix + */ + public ElementCreator(Document document, String ns, String prefix) { + this.document = document; + this.ns = ns; + this.prefix = prefix; + } + + /** + * Creates a new element using the owning document with + * the this creators namespace and namespace prefix. + * @param name The name of the element + * @return The new element + */ + public Element create(String name) { + Element element = document.createElementNS(ns, name); + element.setPrefix(prefix); + return element; + } + + /** + * Adds a new attribute and its value to a given element. + * It does not set the namespace prefix. + * @param element The element to add the attribute to + * @param name The name of the attribute + * @param value The value of the attribute + */ + public void addAttr(Element element, String name, String value) { + addAttr(element, name, value, false); + } + + /** + * Adds a new attribute and its value to a given element. + * If the namespace prefix is used is decided by the 'addPrefix' flag. + * @param element The element to add the attribute to + * @param name The name of the attribute + * @param value The value of the attribute + * @param addPrefix If true the creators namespace prefix is + * set on the attribute. + */ + public void addAttr( + Element element, + String name, + String value, + boolean addPrefix + ) { + if (addPrefix) { + Attr attr = document.createAttributeNS(ns, name); + attr.setValue(value); + attr.setPrefix(prefix); + + element.setAttributeNode(attr); + } + else { + element.setAttribute(name, value); + } + + } + } // class ElementCreator + + /** + * Creates a new XML document + * @return the new XML document ot null if something went wrong during + * creation. + */ + public static final Document newDocument() { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setNamespaceAware(true); + + try { + return factory.newDocumentBuilder().newDocument(); + } + catch (ParserConfigurationException pce) { + logger.error(pce.getLocalizedMessage(), pce); + } + return null; + } + + /** + * Loads a XML document namespace aware from a file + * @param file The file to load. + * @return the XML document or null if something went wrong + * during loading. + */ + public static final Document parseDocument(File file) { + InputStream inputStream = null; + try { + inputStream = new BufferedInputStream(new FileInputStream(file)); + return parseDocument(inputStream); + } + catch (IOException ioe) { + logger.error(ioe.getLocalizedMessage(), ioe); + } + finally { + if (inputStream != null) { + try { inputStream.close(); } + catch (IOException ioe) {} + } + } + return null; + } + + public static final Document parseDocument(InputStream inputStream) { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setNamespaceAware(true); + + try { + return factory.newDocumentBuilder().parse(inputStream); + } + catch (ParserConfigurationException pce) { + logger.error(pce.getLocalizedMessage(), pce); + } + catch (SAXException se) { + logger.error(se.getLocalizedMessage(), se); + } + catch (IOException ioe) { + logger.error(ioe.getLocalizedMessage(), ioe); + } + return null; + } + + /** + * Creates a new XPath without a namespace context. + * @return the new XPath. + */ + public static final XPath newXPath() { + return newXPath(null); + } + + /** + * Creates a new XPath with a given namespace context. + * @param namespaceContext The namespace context to be used or null + * if none should be used. + * @return The new XPath + */ + public static final XPath newXPath(NamespaceContext namespaceContext) { + XPathFactory factory = XPathFactory.newInstance(); + XPath xpath = factory.newXPath(); + if (namespaceContext != null) { + xpath.setNamespaceContext(namespaceContext); + } + return xpath; + } + + /** + * Evaluates an XPath query on a given object and returns the result + * as a given type. No namespace context is used. + * @param root The object which is used as the root of the tree to + * be searched in. + * @param query The XPath query + * @param returnTyp The type of the result. + * @return The result of type 'returnTyp' or null if something + * went wrong during XPath evaluation. + */ + public static final Object xpath( + Object root, + String query, + QName returnTyp + ) { + return xpath(root, query, returnTyp, null); + } + + /** + * Evaluates an XPath query on a given object and returns the result + * as a string. A given namespace context is used. + * @param root The object which is used as the root of the tree to + * be searched in. + * @param query The XPath query + * @param namespaceContext The namespace context to be used or null + * if none should be used. + * @return The result of the query or null if something went wrong + * during XPath evaluation. + */ + public static final String xpathString( + Object root, String query, NamespaceContext namespaceContext + ) { + return (String)xpath( + root, query, XPathConstants.STRING, namespaceContext); + } + + /** + * Evaluates an XPath query on a given object and returns the result + * as a given type. Optionally a namespace context is used. + * @param root The object which is used as the root of the tree to + * be searched in. + * @param query The XPath query + * @param returnType The type of the result. + * @param namespaceContext The namespace context to be used or null + * if none should be used. + * @return The result of type 'returnTyp' or null if something + * went wrong during XPath evaluation. + */ + public static final Object xpath( + Object root, + String query, + QName returnType, + NamespaceContext namespaceContext + ) { + if (root == null) { + return null; + } + + try { + XPath xpath = newXPath(namespaceContext); + if (xpath != null) { + return xpath.evaluate(query, root, returnType); + } + } + catch (XPathExpressionException xpee) { + logger.error(xpee.getLocalizedMessage(), xpee); + } + + return null; + } + + /** + * Streams out an XML document to a given output stream. + * @param document The document to be streamed out. + * @param out The output stream to be used. + * @return true if operation succeeded else false. + */ + public static boolean toStream(Document document, OutputStream out) { + try { + Transformer transformer = + TransformerFactory.newInstance().newTransformer(); + DOMSource source = new DOMSource(document); + StreamResult result = new StreamResult(out); + transformer.transform(source, result); + return true; + } + catch (TransformerConfigurationException tce) { + logger.error(tce.getLocalizedMessage(), tce); + } + catch (TransformerFactoryConfigurationError tfce) { + logger.error(tfce.getLocalizedMessage(), tfce); + } + catch (TransformerException te) { + logger.error(te.getLocalizedMessage(), te); + } + + return false; + } + + /** + * Transforms an XML document into a byte array. + * @param document The document to be streamed out. + * @return the byte array or null if operation failed or + * document is null. + */ + public static byte [] toByteArray(Document document) { + if (document == null) { + return null; + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + return toStream(document, baos) + ? baos.toByteArray() + : null; + } + + public static Document fromByteArray(byte [] data) { + if (data == null) { + return null; + } + return parseDocument(new ByteArrayInputStream(data)); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/writer/FillStyleWriter.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,324 @@ +package de.intevation.mxd.writer; + +import java.io.IOException; +import java.awt.Color; +import org.apache.log4j.Logger; + +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +import edu.umn.gis.mapscript.mapObj; +import edu.umn.gis.mapscript.layerObj; +import edu.umn.gis.mapscript.classObj; +import edu.umn.gis.mapscript.styleObj; +import edu.umn.gis.mapscript.colorObj; +import edu.umn.gis.mapscript.symbolObj; +import edu.umn.gis.mapscript.symbolSetObj; +import edu.umn.gis.mapscript.lineObj; +import edu.umn.gis.mapscript.pointObj; + + +/** + * The interface to the mapfile writer. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class FillStyleWriter { + + /** + * The Logger. + */ + private static final Logger logger = + Logger.getLogger(FillStyleWriter.class); + + private mapObj map; + private classObj cl; + private styleObj style; + + public FillStyleWriter (mapObj map, classObj cl) { + logger.debug("contructor(mapObj, classObj)"); + this.map = map; + this.cl = cl; + this.style = new styleObj(cl); + } + + /** + * Write the content. + */ + public boolean write(Element symbolElement) { + logger.debug("write()Element"); + symbolSetObj symbolSet = map.getSymbolset(); + + if(symbolElement.hasChildNodes()) { + NodeList symbols = symbolElement.getChildNodes(); + for (int i = 0; i < symbols.getLength(); i++) { + Element nextSym = (Element)symbols.item(i); + String type = nextSym.getAttribute("type"); + + if(((symbols.getLength() > 1 && i == 0) || + (symbols.getLength() == 1 && + !symbolElement.hasAttribute("hatch"))) && + type.equals("line")) { + writeOutline(nextSym); + if (symbols.getLength() == 1) { + writeSimple(symbolElement); + } + } + else if(nextSym.getTagName().equals("symbol") && + !symbolElement.hasAttribute("hatch") || + (i == 1 && type.equals("marker"))) { + double gap = 0; + if(symbolElement.hasAttribute("xseparation")) { + try { + gap = Double.parseDouble( + symbolElement.getAttribute("xseparation")); + } + catch(NumberFormatException nfe) { + gap = 0; + } + } + writeMarker(nextSym, gap); + } + else if (nextSym.getTagName().equals("symbol") && + symbolElement.hasAttribute("hatch")) { + if(symbolElement.hasAttribute("angle")) { + nextSym.setAttribute( + "angle", + symbolElement.getAttribute("angle")); + } + if(symbolElement.hasAttribute("separation")) { + nextSym.setAttribute( + "size", + symbolElement.getAttribute("separation")); + } + writeMarker(nextSym, -1); + } + else { + writeSimple(symbolElement); + } + } + } + else { + writeSimple(symbolElement); + if(symbolElement.hasAttribute("outline_color")) { + Color oCol = Color.decode( + symbolElement.getAttribute("outline_color")); + colorObj outlineColor = new colorObj( + oCol.getRed(), + oCol.getGreen(), + oCol.getBlue(), + -4); + style.setOutlinecolor(outlineColor); + try { + style.setOutlinewidth(Double.parseDouble( + symbolElement.getAttribute("outline_size"))); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting outline width."); + style.setOutlinewidth(0.0); + } + } + + } + + return true; + } + + /** + * Write the outline for a polygon. + */ + private void writeOutline(Element symbolElement) { + logger.debug("writeOutline()"); + //write transparent outline + colorObj color = new colorObj(-1, -1, -1, -4); + if(symbolElement.hasAttribute("width")) { + double w = 0; + try { + w = Double.parseDouble(symbolElement.getAttribute("width")); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting outline width."); + w = 0; + } + if (w < 1.0) { + return; + } + } + //write new style for the outline + //TODO write further attribute like pattern etc. + Color oCol = Color.decode( + symbolElement.getAttribute("color")); + + styleObj outline = new styleObj (cl); + + colorObj outlinecolor = new colorObj( + oCol.getRed(), + oCol.getGreen(), + oCol.getBlue(), + -4); + outline.setOutlinecolor(outlinecolor); + try { + outline.setOutlinewidth(Double.parseDouble( + symbolElement.getAttribute("width"))); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting outline width."); + outline.setOutlinewidth(0.0); + } + if(symbolElement.hasAttribute("linestyle")) { + String ls = symbolElement.getAttribute("linestyle"); + double[] vals; + if(ls.equals("dash")) { + outline.setPatternlength(2); + vals = new double[] {4.0, 4.0, 0, 0, 0, 0, 0, 0, 0, 0}; + outline.setPattern(vals); + } + else if(ls.equals("dot")) { + outline.setPatternlength(2); + vals = new double[] {1.0, 3.0, 0, 0, 0, 0, 0, 0, 0, 0}; + outline.setPattern(vals); + } + else if(ls.equals("dashdot")) { + outline.setPatternlength(4); + vals = new double[] {4.0, 3.0, 1.0, 3.0, 0, 0, 0, 0, 0, 0, 0}; + outline.setPattern(vals); + } + else if (ls.equals("dashdotdot")) { + outline.setPatternlength(6); + vals = new double[] {5.0, 3.0, 1.0, 3.0, 1.0, 4.0, 0, 0, 0, 0}; + outline.setPattern(vals); + } + } + + + } + + /** + * Write marker attributes and a symbol for the polygon fill. + */ + private void writeMarker(Element symbolElement, double gap) { + logger.debug("writeMarker()"); + String name = symbolElement.getAttribute("name"); + String type = symbolElement.getAttribute("type"); + if (symbolElement.hasAttribute("angle")) { + try { + style.setAngle( + Double.parseDouble(symbolElement.getAttribute("angle"))); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting angle."); + style.setAngle(0.0); + } + } + if(symbolElement.hasAttribute("color")) { + String c = symbolElement.getAttribute("color"); + Color col = Color.decode(c); + colorObj color = new colorObj( + col.getRed(), + col.getGreen(), + col.getBlue(), + -4); + style.setColor(color); + } + if (symbolElement.hasAttribute ("size")) { + double size = 1; + try { + size = Double.parseDouble(symbolElement.getAttribute("size")); + } + catch(NumberFormatException nfe) { + size = 1.0; + } + style.setSize(size); + //In arcgis the separation goes from center to center, so the gap is + //the separation - size + if (gap > 0) { + style.setGap(gap - size); + } + } + if(symbolElement.hasAttribute("outline_color")) { + Color oCol = Color.decode( + symbolElement.getAttribute("outline_color")); + colorObj outlineColor = new colorObj( + oCol.getRed(), + oCol.getGreen(), + oCol.getBlue(), + -4); + style.setOutlinecolor(outlineColor); + try { + style.setOutlinewidth(Double.parseDouble( + symbolElement.getAttribute("outline_size"))); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting angle."); + style.setOutlinewidth(0.0); + } + } + if(type.equals("marker")) { + style.setSymbolByName(map, name); + SymbolWriter sw = new SymbolWriter(this.map, this.cl); + sw.write(symbolElement); + } + else if(type.equals("line")) { + style.setSymbolByName(map, "hatch"); + SymbolWriter sw = new SymbolWriter(this.map, this.cl); + symbolElement.setAttribute("name", "hatch"); + sw.write(symbolElement); + if(symbolElement.hasAttribute("linestyle")) { + String ls = symbolElement.getAttribute("linestyle"); + double[] vals; + if(ls.equals("dash")) { + style.setPatternlength(2); + vals = new double[] {4.0, 4.0, 0, 0, 0, 0, 0, 0, 0, 0}; + style.setPattern(vals); + } + else if(ls.equals("dot")) { + style.setPatternlength(2); + vals = new double[] {1.0, 3.0, 0, 0, 0, 0, 0, 0, 0, 0}; + style.setPattern(vals); + } + else if(ls.equals("dashdot")) { + style.setPatternlength(4); + vals = new double[] {4.0, 3.0, 1.0, 3.0, 0, 0, 0, 0, 0, 0, 0}; + style.setPattern(vals); + } + else if (ls.equals("dashdotdot")) { + style.setPatternlength(6); + vals = new double[] {5.0, 3.0, 1.0, 3.0, 1.0, 4.0, 0, 0, 0, 0}; + style.setPattern(vals); + } + } + } + } + + /** + * Write simple fill attributes. + */ + private void writeSimple(Element symbolElement) { + logger.debug("writeSimple(Element)"); + if(symbolElement.hasAttribute("transparency")) { + double value = 0; + try { + value = Double.parseDouble( + symbolElement.getAttribute("transparency")); + } + catch(NumberFormatException nfe) { + value = 0; + } + int opacity = (int)(value/255) * 100; + if(value >= 0) { + style.setOpacity(opacity); + } + } + if(symbolElement.hasAttribute("color")) { + String c = symbolElement.getAttribute("color"); + Color col = Color.decode(c); + colorObj color = new colorObj( + col.getRed(), + col.getGreen(), + col.getBlue(), + -4); + style.setColor(color); + } + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/writer/IWriter.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,16 @@ +package de.intevation.mxd.writer; + +import org.w3c.dom.Document; + +/** + * The interface to the mapfile writer. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public interface IWriter { + /** + * Write the content. + */ + boolean write(Document doc); +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/writer/LineStyleWriter.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,168 @@ +package de.intevation.mxd.writer; + +import java.awt.Color; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Element; + +import edu.umn.gis.mapscript.mapObj; +import edu.umn.gis.mapscript.classObj; +import edu.umn.gis.mapscript.styleObj; +import edu.umn.gis.mapscript.colorObj; +import edu.umn.gis.mapscript.symbolObj; +import edu.umn.gis.mapscript.symbolSetObj; + + +/** + * The interface to the mapfile writer. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class LineStyleWriter { + + /** + * The Logger. + */ + private static final Logger logger = Logger.getLogger(LineStyleWriter.class); + + private mapObj map; + private classObj cl; + private styleObj style; + + public LineStyleWriter (mapObj map, classObj cl) { + this.map = map; + this.cl = cl; + this.style = new styleObj(cl); + } + + /** + * Write the content. + */ + public boolean write(Element symbolElement) { + logger.debug("write(Element)"); + symbolSetObj symbolSet = map.getSymbolset(); + if(symbolElement.hasAttribute("width")) { + double w = 0; + try { + w = Double.parseDouble(symbolElement.getAttribute("width")); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting width. No line width set."); + w = 0; + } + if(w < 1.0) { + return false; + } + style.setWidth((int)w); + } + if(symbolElement.hasAttribute("angle")) { + try { + style.setAngle( + Double.parseDouble(symbolElement.getAttribute("angle"))); + } + catch(NumberFormatException nfe) { + logger.info("Error setting angle. Could not get value."); + } + } + if(symbolElement.hasAttribute("color")) { + String c = symbolElement.getAttribute("color"); + Color col = Color.decode(c); + colorObj color = new colorObj( + col.getRed(), + col.getGreen(), + col.getBlue(), + -4); + style.setColor(color); + } + + if(symbolElement.hasAttribute("size")) { + try { + style.setSize((int)Double.parseDouble( + symbolElement.getAttribute("size"))); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting size. Setting size to 1."); + style.setSize (1); + } + } + String type = symbolElement.getAttribute("type"); + if(type.equals("marker")) { + SymbolWriter sw = new SymbolWriter(this.map, this.cl); + sw.write(symbolElement); + } + String name = symbolElement.getAttribute("name"); + style.setSymbolByName(map, name); + symbolObj sym = symbolSet.getSymbolByName(name); + + //The following lines are for dashed and/or dotted lines. + if(symbolElement.hasAttribute("linestyle")) { + String ls = symbolElement.getAttribute("linestyle"); + double[] vals; + if(ls.equals("dash")) { + style.setPatternlength(2); + vals = new double[] {4.0, 4.0, 0, 0, 0, 0, 0, 0, 0, 0}; + style.setPattern(vals); + } + else if(ls.equals("dot")) { + style.setPatternlength(2); + vals = new double[] {1.0, 4.0, 0, 0, 0, 0, 0, 0, 0, 0}; + style.setPattern(vals); + } + else if(ls.equals("dashdot")) { + style.setPatternlength(4); + vals = new double[] {5.0, 4.0, 1.0, 4.0, 0, 0, 0, 0, 0, 0}; + style.setPattern(vals); + } + else if (ls.equals("dashdotdot")) { + style.setPatternlength(6); + vals = new double[] {5.0, 4.0, 1.0, 3.0, 1.0, 4.0, 0, 0, 0, 0}; + style.setPattern(vals); + } + } + else if(symbolElement.hasAttribute("pattern_count")) { + int count = 0; + try { + count = Integer.parseInt( + symbolElement.getAttribute("pattern_count")); + double[] vals = new double[10]; + double move = 0.0; + int pos = 0; + for(int i = 0; i < count; i++) { + double mark = + Double.parseDouble(symbolElement.getAttribute("mark_" + i)); + double gap = + Double.parseDouble(symbolElement.getAttribute("gap_" + i)); + if(i == 0 && mark == 0.0) { + move = gap; + } + else if(i == count - 1 && move > 0.0) { + vals[pos++] = mark; + vals[pos++] = gap + move; + } + else { + vals[pos++] = mark; + vals[pos++] = gap; + } + } + if(move > 0.0) { + style.setPatternlength((count*2) -2); + } + else { + style.setPatternlength(count*2); + } + style.setPattern(vals); + + } + catch(NumberFormatException nfe) { + logger.warn("Could not write PATTERN."); + } + } + + + + + return false; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/writer/MapScriptWriter.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,382 @@ +package de.intevation.mxd.writer; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +import java.io.File; + +import javax.xml.xpath.XPathConstants; + +import edu.umn.gis.mapscript.mapObj; +import edu.umn.gis.mapscript.layerObj; +import edu.umn.gis.mapscript.classObj; + +import edu.umn.gis.mapscript.MS_UNITS; +import edu.umn.gis.mapscript.MS_LAYER_TYPE; +import edu.umn.gis.mapscript.MS_CONNECTION_TYPE; + +import de.intevation.mxd.utils.XMLUtils; + +/** + * The Mapfile Writer. + * This Writer uses the MapScript Java API to create Mapfiles from a DOM. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MapScriptWriter +implements IWriter +{ + /** + * The Logger. + */ + private static final Logger logger = Logger.getLogger(MapScriptWriter.class); + + /** + * Private member. + */ + private Document root; + private mapObj map; + private String mapFilename; + private String MS_BINDIR = "c:/ms_6.1-dev/bin"; + private String prefix = ""; + + public MapScriptWriter() { + map = new mapObj(""); + mapFilename = ""; + } + + public MapScriptWriter(String templ, String filename) { + map = new mapObj(templ); + mapFilename = filename; + } + + /** + * Write the mapfile. + * @param doc The root document containin the map attributes. + * + * @return Currently always true. + */ + public boolean write(Document doc) { + logger.debug("write()"); + this.root = doc; + + //Get the filename. + Element fileNode = (Element)XMLUtils.xpath( + root, + "/mxd/file", + XPathConstants.NODE); + //Write the map attributes. + writeMap(); + //Write the layers. + writeLayer(); + //Save the map. + mapObj cloneMap = map.cloneMap(); + cloneMap.save(mapFilename); + logger.info("Mapfile successfully created."); + return true; + } + + /** + * Create the map object and set the attributes. + */ + private void writeMap() { + logger.debug("writeMap()"); + //Get the map. + Element mapNode = (Element)XMLUtils.xpath( + root, + "/mxd/map", + XPathConstants.NODE); + + //Set the name. + map.setName(mapNode.getAttribute("name")); + map.setMetaData("wms_title", mapNode.getAttribute("name")); + //Set the extent. + map.setExtent( + Double.parseDouble(mapNode.getAttribute("extent_min_x")), + Double.parseDouble(mapNode.getAttribute("extent_min_y")), + Double.parseDouble(mapNode.getAttribute("extent_max_x")), + Double.parseDouble(mapNode.getAttribute("extent_max_y"))); + + //Set the units. + String units = mapNode.getAttribute("units"); + MS_UNITS msu; + if(units.equals("feet")) { + msu = MS_UNITS.MS_FEET; + } + else if(units.equals("inches")) { + msu = MS_UNITS.MS_INCHES; + } + else if(units.equals("kilometers")) { + msu = MS_UNITS.MS_KILOMETERS; + } + else if(units.equals("meters")) { + msu = MS_UNITS.MS_METERS; + } + else if(units.equals("miles")) { + msu = MS_UNITS.MS_MILES; + } + else if(units.equals("nauticalmiles")) { + msu = MS_UNITS.MS_NAUTICALMILES; + } + else if(units.equals("points")) { + msu = MS_UNITS.MS_PIXELS; + } + else { + msu = MS_UNITS.MS_METERS; + } + map.setUnits(msu); + + //TODO: Find out whats the correct scale value. + //map.setScaledenom(Double.parseDouble(mapNode.getAttribute("scale"))); + } + + /** + * Create layer objects and set the attributes. + */ + private void writeLayer() { + logger.debug("writeLayer()"); + Element mapNode = (Element)XMLUtils.xpath( + root, + "/mxd/map", + XPathConstants.NODE); + NodeList list = mapNode.getElementsByTagName("layer"); + for(int i = 0; i < list.getLength(); i++) { + Element layerElement = (Element)list.item(i); + layerObj layer = new layerObj(map); + + //The layer name. + String lname = layerElement.getAttribute("name"); + lname = lname.replaceAll(" ", ""); + layer.setName(lname); + layer.setMetaData("wms_title", layerElement.getAttribute("name")); + + //The layer status. + String stat = layerElement.getAttribute("status"); + if (stat.equals("on")) { + layer.setStatus(1); + } + else { + layer.setStatus(0); + } + + //The scale. + double maxScale = 0; + double minScale = 0; + try { + maxScale = + Double.parseDouble(layerElement.getAttribute("max_scale")); + minScale = + Double.parseDouble(layerElement.getAttribute("min_scale")); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting scale."); + maxScale = 0; + minScale = 0; + } + layer.setMaxscaledenom(maxScale); + layer.setMinscaledenom(minScale); + + //The layer type. + String type = layerElement.getAttribute("type"); + if(type.equals("point")) { + layer.setType(MS_LAYER_TYPE.MS_LAYER_POINT); + } + else if (type.equals("line")) { + layer.setType(MS_LAYER_TYPE.MS_LAYER_LINE); + } + else if (type.equals("polygon")) { + layer.setType(MS_LAYER_TYPE.MS_LAYER_POLYGON); + } + layer.setTileitem(""); + + //The layer datasource. + String con_type = layerElement.getAttribute("connection_type"); + if(con_type.equals("local")) { + String datasource = ""; + if(layerElement.hasAttribute("workspace")) { + datasource = layerElement.getAttribute("workspace"); + datasource += File.separator; + } + datasource += layerElement.getAttribute("data_source"); + layer.setData(datasource); + } + else if(con_type.equals("SDE")) { + logger.info( + "SDE datasource found." + + " Please edit password in mapfile."); + layer.setConnectionType( + MS_CONNECTION_TYPE.MS_PLUGIN.swigValue(), + MS_BINDIR + "/ms/plugins/msplugin_sde_93.dll"); + layer.setConnection( + layerElement.getAttribute("server") + "," + + "port:" + layerElement.getAttribute("instance") + "," + + layerElement.getAttribute("database") + "," + + layerElement.getAttribute("user") + ",<PASSWORD>"); + layer.setData( + layerElement.getAttribute("data_source") + + ",SHAPE," + + layerElement.getAttribute("version")); + layer.setProcessing("CLOSE_CONNECTION=defer"); + layer.setProcessing("ATTRIBUTE_QUALIFIED=TRUE"); + if(layerElement.hasAttribute("join_table")) { + layer.setProcessing( + "JOINTABLE=" + + layerElement.getAttribute("join_table")); + layer.setFilter( + "where " + + layerElement.getAttribute("definition_query") + + " AND " + + layerElement.getAttribute("join_table_target") + "." + + layerElement.getAttribute("join_field_target") + "=" + + layerElement.getAttribute("join_table") + "." + + layerElement.getAttribute("join_field")); + } + else { + prefix = layerElement.getAttribute("data_source"); + } + } + layer.setTemplate("PleaseInsertAValidTemplateForGFI"); + //Write classes. + writeClass(layer, layerElement); + } + + } + + /** + * Adds the classes to the layer. + * @param layer Mapscript layer object. + * @param layerElement Dom element containing the class attributes. + */ + private void writeClass(layerObj layer, Element layerElement) { + logger.debug("writeClass(layerObj, Element)"); + //Get all renderer elements (renderer in arcgis equals class in the + //mapfile.) + NodeList list = layerElement.getElementsByTagName("renderer"); + + //Create all found class objects and write the symbols and styles for + //each class. + for(int i = 0; i < list.getLength(); i++) { + Element classElement = (Element)list.item(i); + classObj co = new classObj(layer); + String name = classElement.getAttribute("label"); + if (name.equals("")) { + name = layerElement.getAttribute("name"); + if (list.getLength() > 1) { + name += "-" + i; + } + } + co.setName (name); + if(classElement.hasAttribute("field_count")) { + co.setExpression(createExpression(classElement)); + } + //Write symbols and styles. + NodeList l = classElement.getChildNodes(); + for (int j = l.getLength() - 1; j >= 0; j--) { + Element elem = (Element)l.item(j); + + String type = layerElement.getAttribute("type"); + if(type.equals("point") && elem.getTagName().equals("symbol")) { + MarkerStyleWriter swriter = new MarkerStyleWriter (this.map, co); + swriter.write (elem); + } + else if(type.equals("line") && elem.getTagName().equals("symbol")) { + LineStyleWriter swriter = new LineStyleWriter (this.map, co); + swriter.write (elem); + } + else if(type.equals("polygon") && elem.getTagName().equals("symbol")) { + FillStyleWriter swriter = new FillStyleWriter (this.map, co); + swriter.write (elem); + } + } + } + } + + + private String createExpression(Element ce) { + String expression = "("; + int count = 0; + try { + count = Integer.parseInt(ce.getAttribute("field_count")); + } + catch(NumberFormatException nfe) { + return ""; + } + if(count == 1) { + try { + Double.parseDouble(ce.getAttribute("value")); + String exp = ce.getAttribute("expression_field_0"); + String pre = ""; + if (!prefix.equals("") && !exp.startsWith(prefix)) { + pre = prefix + "."; + } + expression += "[" + pre; + expression += ce.getAttribute("expression_field_0") + "]"; + if(ce.hasAttribute("min_value")) { + expression += " > " + ce.getAttribute("min_value"); + expression += " AND ["; + expression += ce.getAttribute("expression_field_0")+ "]"; + } + expression += " " + ce.getAttribute("expression_operator"); + expression += " " + ce.getAttribute("value") + ")"; + } + catch(NumberFormatException nfe) { + String exp = ce.getAttribute("expression_field_0"); + String pre = ""; + if (!prefix.equals("") && !exp.startsWith(prefix)) { + pre = prefix + "."; + } + expression += "\"[" + pre; + expression += ce.getAttribute("expression_field_0") + "]\""; + expression += " " + ce.getAttribute("expression_operator"); + expression += " \"" + ce.getAttribute("value") + "\")"; + } + catch(Exception e) { + e.printStackTrace(); + } + } + else { + for (int i = 0; i < count; i++) { + try { + Double.parseDouble(ce.getAttribute("value_" + i)); + String exp = ce.getAttribute("expression_field_" + i); + String pre = ""; + if (!prefix.equals("") && !exp.startsWith(prefix)) { + pre = prefix + "."; + } + expression += "[" + pre; + expression += ce.getAttribute("expression_field_" + i) + "]"; + expression += " " + ce.getAttribute("expression_operator"); + expression += " " + ce.getAttribute("value_" + i); + if (i < count - 1) { + expression += " AND "; + } + else { + expression += ")"; + } + } + catch (NumberFormatException nfe) { + String exp = ce.getAttribute("expression_field_" + i); + String pre = ""; + if (!prefix.equals("") && !exp.startsWith(prefix)) { + pre = prefix + "."; + } + expression += "\"[" + pre; + expression += ce.getAttribute("expression_field_" + i) + "]\""; + expression += " " + ce.getAttribute("expression_operator"); + expression += " " + ce.getAttribute("value_" + i); + if (i < count - 1) { + expression += " AND "; + } + else { + expression += ")"; + } + } + } + } + return expression; + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/writer/MarkerStyleWriter.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,108 @@ +package de.intevation.mxd.writer; + +import java.awt.Color; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Element; + +import edu.umn.gis.mapscript.mapObj; +import edu.umn.gis.mapscript.classObj; +import edu.umn.gis.mapscript.styleObj; +import edu.umn.gis.mapscript.colorObj; +import edu.umn.gis.mapscript.symbolSetObj; + + +/** + * The interface to the mapfile writer. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MarkerStyleWriter { + + /** + * The Logger. + */ + private static final Logger logger = Logger.getLogger(MarkerStyleWriter.class); + + private mapObj map; + private classObj cl; + private styleObj style; + + public MarkerStyleWriter (mapObj map, classObj cl) { + this.map = map; + this.cl = cl; + this.style = new styleObj(cl); + } + + /** + * Write the content. + */ + public boolean write(Element symbolElement) { + logger.debug("write(Element)"); + symbolSetObj symbolSet = map.getSymbolset(); + + if (symbolElement.hasAttribute("angle")) { + try { + style.setAngle( + Double.parseDouble(symbolElement.getAttribute("angle"))); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting angle."); + style.setAngle(0.0); + } + } + if(symbolElement.hasAttribute("color")) { + String c = symbolElement.getAttribute("color"); + Color col = Color.decode(c); + colorObj color = new colorObj( + col.getRed(), + col.getGreen(), + col.getBlue(), + -4); + style.setColor(color); + } + if (symbolElement.hasAttribute ("size")) { + try { + style.setSize(Double.parseDouble( + symbolElement.getAttribute("size"))); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting size. Setting to deafult: 1."); + style.setSize(1); + } + } + if(symbolElement.hasAttribute("outline_color")) { + Color oCol = Color.decode( + symbolElement.getAttribute("outline_color")); + colorObj outlineColor = new colorObj( + oCol.getRed(), + oCol.getGreen(), + oCol.getBlue(), + -4); + style.setOutlinecolor(outlineColor); + try { + style.setOutlinewidth(Double.parseDouble( + symbolElement.getAttribute("outline_size"))); + } + catch(NumberFormatException nfe) { + logger.warn("Error setting outline width."); + } + } + String symType = symbolElement.getAttribute("style"); + if(symType.equals("point") || + symType.equals("arrow") || + symType.equals("char")) { + SymbolWriter sw = new SymbolWriter(this.map, this.cl); + sw.write(symbolElement); + } + else { + return false; + } + String name = symbolElement.getAttribute("name"); + style.setSymbolByName(map, name); + + return true; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/writer/SymbolWriter.java Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,200 @@ +package de.intevation.mxd.writer; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Element; + +import edu.umn.gis.mapscript.mapObj; +import edu.umn.gis.mapscript.classObj; +import edu.umn.gis.mapscript.styleObj; +import edu.umn.gis.mapscript.symbolObj; +import edu.umn.gis.mapscript.symbolSetObj; +import edu.umn.gis.mapscript.lineObj; +import edu.umn.gis.mapscript.pointObj; +import edu.umn.gis.mapscript.MS_SYMBOL_TYPE; + + +/** + * The interface to the mapfile writer. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class SymbolWriter { + + /** + * The Logger. + */ + private static final Logger logger = Logger.getLogger(SymbolWriter.class); + + private mapObj map; + private classObj cl; + private styleObj style; + + public SymbolWriter (mapObj map, classObj cl) { + this.map = map; + this.cl = cl; + this.style = new styleObj(cl); + } + + /** + * Write the content. + */ + public boolean write(Element symbolElement) { + logger.debug("write(Element)"); + symbolSetObj symbolSet = map.getSymbolset(); + + String name = symbolElement.getAttribute("name"); + symbolObj sym = symbolSet.getSymbolByName(name); + String symType = symbolElement.getAttribute("style"); + String type = symbolElement.getAttribute("type"); + if(symType.equals("point")) { + writeSimple(sym); + } + else if (symType.equals("arrow")) { + writeArrow(sym, symbolElement); + } + else if (symType.equals("char")) { + int exists = symbolExists(symbolElement); + if(exists == -1) { + String old = symbolElement.getAttribute("name"); + symbolElement.setAttribute( + "name", + old + symbolSet.getNumsymbols() + 1); + writeCharacter(sym, symbolElement); + } + else { + symbolElement.setAttribute( + "name", + symbolSet.getSymbol(exists).getName()); + } + } + else if (type.equals("line")) { + writeHatch(sym); + } + else { + return false; + } + + try { + saveSymbolSet(symbolSet); + } + catch(Exception e) { + logger.error("Error saving symbol set."); + return false; + } + + return true; + } + + private void writeSimple(symbolObj symbol) { + logger.debug("writeSimple(symbolObj)"); + lineObj points = new lineObj(); + points.add(new pointObj(1,1,0)); + symbol.setType(MS_SYMBOL_TYPE.MS_SYMBOL_ELLIPSE.swigValue()); + symbol.setPoints(points); + symbol.setFilled(1); + } + + private void writeArrow(symbolObj symbol, Element symbolElement) { + logger.debug("writeArrow(symbolObj, Element)"); + double len = 0; + double width = 1; + try { + len = + Double.parseDouble(symbolElement.getAttribute("length")); + width = + Double.parseDouble(symbolElement.getAttribute("width")); + } + catch(NumberFormatException nfe) { + logger.warn ("Error setting arrow symbol."); + return; + } + double ratio = len/width; + lineObj points = new lineObj(); + + points.add(new pointObj(0, 0, 0)); + points.add(new pointObj((1*ratio), 0.5, 0)); + points.add(new pointObj(0, 1, 0)); + points.add(new pointObj(0, 0, 0)); + symbol.setType(MS_SYMBOL_TYPE.MS_SYMBOL_VECTOR.swigValue()); + symbol.setPoints(points); + symbol.setFilled(1); + } + + private void writeCharacter(symbolObj symbol, Element symbolElement) { + logger.debug("writeCharacter(symbolObj, Element)"); + //TODO Write the symbol correctly. See Issue 3885 on trac.osgeo.org + String font = symbolElement.getAttribute("font"); + //Remove all blank character to match the mapserver fonts.txt. + font = font.replaceAll(" ", ""); + symbol.setName(symbolElement.getAttribute("name")); + symbol.setFont(font); + symbol.setType(MS_SYMBOL_TYPE.MS_SYMBOL_TRUETYPE.swigValue()); + symbol.setAntialias(1); + symbol.setCharacter("&#" + symbolElement.getAttribute("char") + ";"); + } + + private void writeHatch(symbolObj symbol) { + logger.debug("writeHatch(symbolObj)"); + symbol.setType(MS_SYMBOL_TYPE.MS_SYMBOL_HATCH.swigValue()); + } + + public boolean canWrite(String type) { + if (type.equals("point") || + type.equals("arrow") || + type.equals("char") || + type.equals("line")) { + return true; + } + else { + return false; + } + } + + private void saveSymbolSet(symbolSetObj symbols) + throws Exception { + String path = this.map.getMappath(); + if(path.equals("")) { + return; + } + else { + path += "symbols.sym"; + } + symbols.save(path); + } + + private int symbolExists (Element elem) { + symbolSetObj symbolSet = map.getSymbolset(); + for (int i = 0; i < symbolSet.getNumsymbols(); i++) { + symbolObj sym = symbolSet.getSymbol(i); + int stype = sym.getType(); + String etype = elem.getAttribute("style"); + if(stype == MS_SYMBOL_TYPE.MS_SYMBOL_ELLIPSE.swigValue () && + etype.equals("point")) { + return i; + } + else if(stype == MS_SYMBOL_TYPE.MS_SYMBOL_VECTOR.swigValue () && + etype.equals("arrow")) { + return i; + } + else if(stype == MS_SYMBOL_TYPE.MS_SYMBOL_TRUETYPE.swigValue () && + etype.equals("char")) { + String font = elem.getAttribute("font"); + font = font.replaceAll(" ", ""); + String c = elem.getAttribute("char"); + c = "&#" + c + ";"; + if (font.equals(sym.getFont()) && + c.equals(sym.getCharacter())) { + return i; + } + + } + else if(stype == MS_SYMBOL_TYPE.MS_SYMBOL_HATCH.swigValue () && + etype.equals("hatch")) { + return i; + } + } + return -1; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdata-frida/COPYING Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,11 @@ +The Free Vector GeoData Osnabrück (Frida) is +Copyright (C) by Intevation GmbH and licensed +under the GNU General Public License (see COPYING.GPL). + +Additional license agreement: + +The GNU GPL has been chosen because no analog license +for geographic data does yet exists. +If in the future the Free Software Foundation Europe +officially accepts a Geographic Data license as to be analog +to the GNU GPL, Frida may be upgraded to this new license.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdata-frida/COPYING.GPL Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdata-frida/README Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,20 @@ +This archive contains the Shapefile-formatted version of the + + Frida: Free Vector-Geodata Osnabrück + +Class attributes are in separate .dbf-files and can be joined to +the .shp-files via corresponding IDs. + +Finally there is a .thuban-file for displaying all shapefiles +quickly. You need to have Thuban installed on your system for this. + + +The contents of this archive is not regarded as the sources, +visit the homepage to get the actual source files. + +For the license see file COPYING. + +Read here for more: + + frida.intevation.org + thuban.intevation.org
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdata-frida/gewaesserflaechen.prj Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,1 @@ +PROJCS["Transverse Mercator",GEOGCS["bessel",DATUM["Deutsches_Hauptdreiecksnetz",SPHEROID["bessel",6377397.155,299.1528128],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,6.70]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",1],PARAMETER["false_easting",3500000],PARAMETER["false_northing",0]]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdata-frida/gruenflaechen.prj Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,1 @@ +PROJCS["Transverse Mercator",GEOGCS["bessel",DATUM["Deutsches_Hauptdreiecksnetz",SPHEROID["bessel",6377397.155,299.1528128],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,6.70]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",1],PARAMETER["false_easting",3500000],PARAMETER["false_northing",0]]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdata-frida/overview.thuban Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE session SYSTEM "thuban.dtd"> +<session title="Frida: Free Vector Geodata Osnabrueck"> + <map title="Osnabrueck"> + <layer title="gruenflaechen" filename="gruenflaechen.shp" fill="#00ff7f" stroke="#000000" stroke_width="1"/> + <layer title="gewaesserflaechen" filename="gewaesserflaechen.shp" fill="#3232cc" stroke="#000000" stroke_width="1"/> + <layer title="gewaesserlinien" filename="gewaesserlinien.shp" fill="None" stroke="#3232cc" stroke_width="1"/> + <layer title="poi" filename="poi.shp" fill="None" stroke="#000000" stroke_width="1"/> + <layer title="strassen" filename="strassen.shp" fill="None" stroke="#000000" stroke_width="1"/> + </map> +</session>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdata-frida/poi.prj Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,1 @@ +PROJCS["Transverse Mercator",GEOGCS["bessel",DATUM["Deutsches_Hauptdreiecksnetz",SPHEROID["bessel",6377397.155,299.1528128],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,6.70]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",1],PARAMETER["false_easting",3500000],PARAMETER["false_northing",0]]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdata-frida/strassen.prj Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,1 @@ +PROJCS["Transverse Mercator",GEOGCS["bessel",DATUM["Deutsches_Hauptdreiecksnetz",SPHEROID["bessel",6377397.155,299.1528128],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,6.70]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",1],PARAMETER["false_easting",3500000],PARAMETER["false_northing",0]]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ttf-fonts/fonts.txt Thu Jun 30 12:40:27 2011 +0200 @@ -0,0 +1,77 @@ +# Make sure that your alias-names do _not_ contain spaces since the +# parser dies not handle that correctly. +# FreeSans is a default fallback-font. +FreeSans DejaVuSans.ttf +ESRIMeteorological01 esri_105.ttf +ESRIDefaultMarker esri_11.ttf +ESRIOrdnanceSurvey esri_121.ttf +ESRINIMADNCPT esri_12.ttf +ESRISDS1.951 esri_130.ttf +ESRISDS1.952 esri_131.ttf +ESRISDS2.001 esri_132.ttf +ESRISDS2.002 esri_133.ttf +ESRINIMADNCLN esri_13.ttf +ESRIArrowhead esri_144.ttf +ESRISurveyor esri_149.ttf +ESRINIMAVMAP1&2PT esri_14.ttf +ESRIAMFMElectric esri_150.ttf +ESRIAMFMGas esri_151.ttf +ESRIAMFMSewer esri_152.ttf +ESRIAMFMWater esri_153.ttf +ESRIHydrants esri_159.ttf +ESRINIMAVMAP1&2LN esri_15.ttf +ESRITelecom esri_160.ttf +ESRIPipelineUS1 esri_161.ttf +ESRINIMACityGraphicPT esri_16.ttf +ESRINIMACityGraphicLN esri_17.ttf +ESRIMilMod02 esri_19.ttf +ESRICartography esri_1.ttf +ESRIMilRed01 esri_20.ttf +ESRIIGLFont16 esri_216.ttf +ESRIMilSym01 esri_21.ttf +ESRIIGLFont20 esri_220.ttf +ESRIIGLFont21 esri_221.ttf +ESRIIGLFont22 esri_222.ttf +ESRIIGLFont23 esri_223.ttf +ESRIIGLFont24 esri_224.ttf +ESRIIGLFont25 esri_225.ttf +ESRIMilSym02 esri_22.ttf +ESRIMilSym03 esri_23.ttf +ESRIMilSym04 esri_24.ttf +ESRIMilSym05 esri_25.ttf +ESRIMilMod01 esri_26.ttf +ESRIMil2525CModifiers esri_27Mcr_2.ttf +ESRIPublic1 esri_29.ttf +ESRIEnvironmental&Icons esri_2.ttf +ESRIArcPad esri_30s.ttf +ESRIClimate&Precipitation esri_33.ttf +ESRIBusiness esri_34.ttf +ESRICaves1 esri_375.ttf +ESRICaves2 esri_376.ttf +ESRICaves3 esri_377.ttf +ESRIDimensioning esri_39.ttf +ESRIGeometricSymbols esri_3.ttf +ESRIGeologyUSGS95-525 esri_400.ttf +ESRIElements esri_405.ttf +ESRICommodities esri_406.ttf +ESRINorth esri_40.ttf +ESRIShields esri_44.ttf +ESRIUSMUTCD1 esri_47.ttf +ESRIUSMUTCD2 esri_48.ttf +ESRIUSMUTCD3 esri_49.ttf +ESRIOilGasWater esri_4.ttf +ESRIGeologyAGSO1 esri_500.ttf +ESRIWeather esri_5.ttf +ESRIUSForestry1 esri_651.ttf +ESRIUSForestry2 esri_652.ttf +ESRIConservation esri_730.ttf +ESRIGeology esri_7.ttf +ESRIEnviroHazardIncident esri_800.ttf +ESRIEnviroHazardAnalysis esri_801.ttf +ESRIEnviroHazardSites esri_802.ttf +ESRIHazardousMaterials esri_803.ttf +ESRIFireIncidentNFPA esri_804.ttf +ESRIERSInfrastructuresS1 esri_832.ttf +ESRIERSOperationsS1 esri_837.ttf +ESRICrimeAnalysis esri_8.ttf +ESRITransportationCivic esri_9.ttf