[MXD2map-devel] first impressions, support for query layers

Stephan Holl stephan.holl at intevation.de
Thu Mar 29 10:03:29 CEST 2012


Hello Daniel,

Daniel Araujo Miranda <miranda.dam at dpf.gov.br>, [20120328 - 16:10:45]

> Hello Stephan - and others on the list.
> 
> 	I am trying to use mxd2map with ArcGis Desktop 10.0 service
> pack 3 (ArcInfo) under Windows 7 Professioal and I am getting a few
> errors. Please help me out. I have about 800 layers which I would
> like to make available using mapserver and they are all styled
> already in ArcGIS. (google for Inteligeo and fosslc if you would like
> to know a little bit more about my system)
> 	The bottom line is that I am using ArcGIS Query Layers to add
> postgis layers WITHOUT ArcSDE, and that does not seem to be supported
> by mxd2map. 

Yes, you are right. This is not supported yet.

> I would appreciate any directions and I volunteer to
> contribute code/docs. Three sections follow: tests, bugs and feature
> wishlist:

Great to see you are willing to contribute!

> 
> 
> ===tests===
> 
> *  First try (where is the "logging file"?):
> 
> C:\Program Files (x86)\MXD2map>java -jar mxd2map.jar -m 
> "c:\temp\test.mxd" -a "c:\temp\test.map" -t "c:\temp\template.map"
> 2012-03-28 11:27:29,146 [main] ERROR de.intevation.mxd.Converter - 
> General error. See logging file for more information.
> 
> 
> *  Second try (changed the template file path - is this a bug?):

not that I am aware of, probably use the config-file?!
 
> C:\Program Files (x86)\MXD2map>java -jar mxd2map.jar -m 
> "c:\temp\test.mxd" -a "c:\temp\test.map" -t example\template.map
> 2012-03-28 11:47:56,625 [main] ERROR 
> de.intevation.mxd.reader.FeatureLayerReader - Could not read unique 
> value data.java.lang.NullPointerException
> 2012-03-28 11:47:56,671 [main] INFO 
> de.intevation.mxd.utils.MapScriptUtils - Renamed "Unidades de 
> Criminalistica" to "UnidadesdeCriminalistica".
> 2012-03-28 11:47:56,671 [main] INFO 
> de.intevation.mxd.writer.MapScriptWriter - SDE datasource found.
> Please edit password in mapfile.
> Exception in thread "main" java.lang.UnknownError:
> loadCustomLayerDLL: General error message. Failed to load dynamic
> Layer LIB:
> c:/ms_6.1-dev/bin/ms/plugins/msplugin_sde_93.dll;msGetSymbol():
> General error message. Can't load requested dynamic library:
> c:/ms_6.1-dev/bin/ms/plugins/msplugin_sde_93.dll at 
> edu.umn.gis.mapscript.mapscriptJNI.layerObj_setConnectionType(Native 
> Method)
>          at 
> edu.umn.gis.mapscript.layerObj.setConnectionType(layerObj.java:678)
>          at 
> de.intevation.mxd.writer.MapScriptWriter.writeLayer(MapScriptWriter.java:389) 
> 
>          at 
> de.intevation.mxd.writer.MapScriptWriter.write(MapScriptWriter.java:137)
>          at de.intevation.mxd.Converter.main(Converter.java:139)


it cannot find the (needed) SDE-libs since it tryies to access an SDE
datasource. There are a few sde-dlls needed to access this plugin. Make
sure you put them in the right folder of your mapserver-installation.

> 
> * third try: Since I was unable to load msplugin_sde_93.dll, I tryed 
> again copying the entire apllication to c:\mxd2map with the same
> results of the second try.
> 
> * fourth try: tried from c:\mxd2map with a very simple mxd pointing
> to a shapefile (projection not recognized - SAD69, epsg 4618):
> java -jar mxd2map.jar -m "c:\temp\test2.mxd" -a "c:\temp\test.map" -t 
> example\template.map
> Exception in thread "main" java.lang.UnknownError: 
> msProcessProjection(): Projection library error. no options found in 
> 'init' file
>          at 
> edu.umn.gis.mapscript.mapscriptJNI.mapObj_setProjection(Native Method)
>          at
> edu.umn.gis.mapscript.mapObj.setProjection(mapObj.java:453) at 
> de.intevation.mxd.writer.MapScriptWriter.writeMap(MapScriptWriter.java:181)
>          at 
> de.intevation.mxd.writer.MapScriptWriter.write(MapScriptWriter.java:135)
>          at de.intevation.mxd.Converter.main(Converter.java:139)
> 

This one is easy to fix. It just tells, that the underlaying epsg-file
does not find your EPSG-code. Search for the file and add your
projections there. The included file is stripped down to only a few
projections our customers need.

> * fifth try: reprojected the shapefile to WGS84 and updated the MXD, 
> everything went fine:
> C:\mxd2map>java -jar mxd2map.jar -m "c:\temp\test2.mxd" -a 
> "c:\temp\test.map" -t example\template.map
> 2012-03-28 11:59:45,731 [main] INFO 
> de.intevation.mxd.writer.MapScriptWriter - Mapfile created:
> c:\temp\test.map

Good!

> 
> ===Possible bugs found so far===
> 
> *  does not accept arbitrary coordinate reference systems in the
> source layers. Should output a warning and fall back to a default so
> the user can fix by hand later.

right, described solution above.
 
> *  crashes on query layers (direct postgis connection without SDE).
> If this feature is not implemented, at least try to output the layer
> styles.

right, query layers are not yet supported. Outputting only the style
does not work without implementing the query-layers-access. This is not
a big deal btw., but it is not yet done :-/

> 
> *  "extent" line of the mapfile (line 3) uses system decimal
> separator instead of "."(dot). In my case, mxd2map wrote ","(comma)
> as a decimal separator and mapserver complained "getDouble(): Symbol
> definition error. Parsing error near (,):(line 3)"

Good one. Please file a ticket inside the issue-tracker[1].

> 
> *  mxd2map did not accept "-t" parameter (template file) with full
> path, only with relative path.

OK, please file also a ticket at the tracker [1].

> 
> *  in windows: mapfile missing line CONFIG "PROJ LIB"
> "C:/ms4w/proj/nad"

you can adjust that within your template and it will be available in
the resulting mapfile.

> ===Interesting missing features===
> *  support for query layers
> *  support (best effort) for arbitrary CRSs.
> *  a little more documentation explaining where to put the mapfile (I 
> found out it has to be in c:\ms4w\Apache\cgi-bin) (I know, this
> belongs to mapserver docs, but one or two lines in the docs wouldn't
> hurt)

right, put it on my TODO-list. But generally it can be put anywhere,
depending on the mapserver-installation. I do not user ms4w though.

> *  a little more documentation about the url invocation, which I
> found it to be
> "http://127.0.0.1/cgi-bin/mapserv.exe?map=test.map" (also belongs to
> mapserver docs, but I am a complete mapserver newbie)

applies same as above :-) mapserver-details for viewing the results.

> *  mapserver template for displaying the mapfile straight from the
> url http://127.0.0.1/cgi-bin/mapserv.exe?map=test.map. Right now
> mapserver outputs "mapserver(): Web application error. Traditional
> BROWSE mode requires a TEMPLATE in the WEB section, but none was
> provided"

Use the &template=openlayers in the URL for previewing
(Mapserver-feature since MS 6.0)


> Thanks for the great product.

Nice to hear that, thanks!

Best regards

	Stephan

[1] http://wald.intevation.org/tracker/?atid=333&group_id=56&func=browse



-- 
Stephan Holl <stephan.holl at intevation.de> | Tel.: +49 (0)541-33 508 3663
Intevation GmbH, Neuer Graben 17, 49074 OS  |  AG Osnabrück - HR B 18998
Geschäftsführer:  Frank Koormann, Bernhard Reiter, Dr. Jan-Oliver Wagner
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.wald.intevation.org/pipermail/mxd2map-devel/attachments/20120329/17acc531/attachment.sig>


More information about the MXD2map-devel mailing list