Java Mapscript - querybyattribut SOLVED
listuser HH
listuser at HERZSYS.DE
Wed Apr 19 01:05:13 PDT 2006
Hi Benedikt,
thanks for the interest. I have the encoding problem when I try to
"getLayerByName()". I could get around the problem at this point but I
think I will have the problem later again. So testing is easy - I just
use a simple layer with the name "Regierungspräsidien". When I use this
string to get the layer by name it doesn't work. To be sure I tried to
check this string with the name of the layer which I get from
map.getLayer(0) - which is equal to the other.
My thought was to convert the string before using it in mapscript
functions. Java brings two things to convert strings - perhaps there are
more.
1. make a new String from the old in a special encoding - e.g. --> new
String(oldString.getBytes(), "ISO8859-1")
2. convert chars to different encoding - e.g. [snip] -->
CharToByteISO8859_1 conv4ISO = new
CharToByteISO8859_1();
char[] cs = layerName.toCharArray();
conv4ISO.convert(charArray, 0, charArray.length,
byteArray, 0, byteArray.length);
new String(byteArray);
Because I'm not sure about which encodings are used at wich stpes I
tried some combinations but without luck. I think my code from eclipse
is CP1252. In the eclipse editor properties I changed this to UTF8 and
ISO which also didn't work. I tried to I'm not sure what happens when
mapscript use JNI. Perhaps the string gets converted to UTF8. If this is
right I see no chance for me to change the string in java because it
gets converted even if it is already UTF8. I have to say that I'm not
familiar with this encoding things. If someone has an advice I will
going on testing.
I think it will be a good thing to have "UTF-8 -> ISO-8859-Conversion"
like you suggested. At the moment I can't do this because I have no
possibility to compile the c code.
Best regards,
Norbert
Benedikt Rothe wrote:
>Umberto, Nicol, Norbert, Oliver
>
>Umberto wrote
>
>
>>try to run the attached Java source.
>>
>>
>...
>
>
>>"Südliche Weinstraße" as the second it will work!
>>
>>
>
>In my copy of your mail the queryByAttribute.java-program is not
>attached. Could somebody post program including testdata (or
>download-url) ?
>
>I 'd like to study a running example, because I don't understand
>how umlaut-conversion from Java to Mapserver-kernel can run
>properly anyway and I'd like to understand it :-)
>-----------
>It seems Norbert found a kind of answer to his question
>
>
>>is there a way to do the converion in java dircetly?
>>
>>
>He suggested
>
>
>>Try to convert the String before you set the expression in your code(->
>>
>>
>String( byte
>
>
>>bytes[], String )
>>
>>
>Could you be more precisly? I do not understand what must be converted to
>what.
>How must this be applied to convert a Java-String to a proper
>"Mapserver-String" (?)
>-----------
>Is somebody willing to try to add an "UTF-8 -> ISO-8859-Conversion" in
>mapscript_wrap.c for testpurposes? (Even in the case it works, this would
>not be a real solution because it bypasses swig.)
>
>Benedikt
>
>
>UMN MapServer Users List <MAPSERVER-USERS at LISTS.UMN.EDU> schrieb am
>14.04.2006 15:23:51:
>
>
>
>>Olivier,
>>I GOT IT!
>>
>>try to run the attached Java source. If you pass it two arguments the
>>first being the path to the map file and the second the string to
>>search for and you pass
>>"Südliche Weinstraße" as the second it will work!
>>
>>So why does it fail when "Südliche Weinstraße" is inside the Java
>>code? That is a problem that only happens when javac compiles the
>>source: javac translates all characters to unicode and in doing that
>>it gets the german characters wrong.
>>To solve this give javac the following option: -source 1.4
>>
>>For more see this link:
>>http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5046139
>>
>>On 4/13/06, Umberto Nicoletti <umberto.nicoletti at gmail.com> wrote:
>>
>>
>>>This is probably not related only to java mapscript, so please read
>>>
>>>
>on.
>
>
>>So I was wrong...but I'll leave the proof to the reader ;-)
>>
>>Best regards,
>>Umberto
>>
>>
>>
>>>On 3/30/06, Oliver Wesp <wesp at gdv.com> wrote:
>>>
>>>
>>>>Dear List,
>>>>
>>>>I' struggling with queryByAttributes on an attribute field with
>>>>
>>>>
>german
>
>
>>>>umlauts using java mapscript.
>>>>The odd thing is that the same thing works fine with php mapscript
>>>>
>>>>
>and
>
>
>>>>when I use expressions in my mapfile. I'm using a shapefile as
>>>>
>>>>
>>datasource.
>>
>>
>>>Could someone of the other mapserver developers shed some light on
>>>
>>>
>>this issue?
>>
>>
>>>I have a clue to give: php mapscript is using a different regex
>>>library and this explains why the match does not happen for Java
>>>mapscript, while it does happen in php mapscript. If I am right also
>>>the mapserver cgi should be affected and possibly all other mapscript
>>>too.
>>>
>>>It would be very interesting if someone could report on similar
>>>experiences with the cgi-bin version of mapserver.
>>>
>>>Thanks,
>>>Umberto
>>>
>>>
>>>
>>>>Here is what I do:
>>>>
>>>>layer.queryByAttributes(map,"KREIS_NAME", "/Südliche Weinstraße/",
>>>>mapscriptConstants.MS_MULTIPLE);
>>>>layer.open();
>>>>System.out.println( "Result Count: " +layer.getNumResults() );
>>>>layer.close();
>>>>
>>>>The result is always null while replacing the qstring with something
>>>>that doesn't contain special characters (e.g.
>>>>'Mainz-Bingen') works fine.
>>>>
>>>>As noted above the following layer definition in a mapfile works
>>>>
>>>>
>fine
>
>
>>>>LAYER
>>>> NAME kreis
>>>> STATUS DEFAULT
>>>> TYPE polygon
>>>> DATA "/tmp/subset"
>>>> TEMPLATE "kreis.html"
>>>> CLASSITEM KREIS_NAME
>>>> CLASS
>>>> NAME Boundary
>>>> COLOR 128 128 0
>>>> OUTLINECOLOR 0 0 0
>>>> EXPRESSION /Südliche Weinstraße/
>>>> END
>>>>END
>>>>
>>>>
>>>>but this does not:
>>>>
>>>>layer.setClassitem("KREIS_NAME");
>>>>classObj cl = new classObj(layer);
>>>>cl.setName("Classname");
>>>>cl.setExpression("/Südliche Weinstraße/");
>>>>
>>>>I use Mapserver 4.8.1 on W2k, Tomcat 5.0.28.
>>>>
>>>>I can provide some sample data, just in case someone likes to
>>>>
>>>>
>reproduce.
>
>
>>>>Any help is appreciated.
>>>>
>>>>best regards
>>>>Oliver
>>>>--
>>>>Dipl.-Geogr. Oliver Wesp
>>>>Gesellschaft fuer geografische Datenverarbeitung
>>>>Binger Strasse 49-51
>>>>D-55218 Ingelheim
>>>>fon: +49 6132 714818
>>>>fax: +49 6132 714828
>>>>http: www.gdv.com
>>>>
>>>>
>>>>
>
>
>
More information about the MapServer-users
mailing list