Hi Andreas,

I checked everything now and I'm sufficiently sure the system is using the correct Mapserver version. I also checked the binary path and everything seems fine. I'm still not getting the same output as you. I get an error message however:
Content-Type:: command not found.

Do I need to compile OGR, too? Or am I missing a compile option? Sorry, I'm really not experienced in this at all.

Here is my configuration:
cmake -DCMAKE_INSTALL_PREFIX=/opt \
        -DCMAKE_PREFIX_PATH="/usr/local;/opt" \
        -DWITH_CLIENT_WFS=ON \
        -DWITH_CLIENT_WMS=ON \
        -DWITH_OGR=ON \
        -DWITH_CURL=ON \
        -DWITH_SOS=ON \
        -DWITH_PHP=0 \
        -DWITH_PYTHON=ON \
        -DWITH_SVGCAIRO=OFF \
        -DWITH_ORACLESPATIAL=0 \
        -DWITH_MSSQL2008=OFF \
        -DWITH_THREAD_SAFETY=ON \
        -DWITH_LIBXML2=ON \
        -DWITH_MYSQL=ON\
        -DWITH_SDE=0  .. >../configure.out.txt

I really appreciate your efforts!

Best

Lars

Am 13.01.2015 um 16:52 schrieb Eichner, Andreas - SID:
That's what I get on the console:

$ MS_MAPFILE=$(pwd)/IHK_Handelsflaechen.map ./mapserv 
QUERY_STRING='service=WFS&version=1.1.0&request=GetFeature&featureid=IHK.71247&outputformat=geojson&callback=foobar'Content-Disposition:
 attachment; filename=result.dat
Content-Type: application/json; subtype=geojson; charset=utf-8

foobar({
"type": "FeatureCollection",
"features": [
{ "type": "Feature", "properties": { "PLZ": "09648", ..., "LANDKREIS": "Mittelsachsen" }, "geometry": { 
"type": "Point", "coordinates": [ 4568447.14, 5650577.57 ] } }
]
}
);

In other words, the JSON is enclosed by "foobar(" and ");": The relevant parts 
of the mapfile are:

OUTPUTFORMAT
     NAME 'geojson'
#    NAME 'jsonp'
     DRIVER 'OGR/GEOJSON'
     MIMETYPE 'application/json; subtype=geojson; charset=utf-8'
#    MIMETYPE 'text/javascript; charset=utf-8'
     FORMATOPTION 'STORAGE=stream'
     FORMATOPTION 'FORM=simple'
     FORMATOPTION 'LCO:COORDINATE_PRECISION=5'
     FORMATOPTION 'JSONP=%callback%'
END

WEB
   VALIDATION
     callback '.*'
#    default_callback 'jsonp'
   END
END

The default value does not work, so the substitution parameter must be given.



-----Ursprüngliche Nachricht-----
Von: Lars Fricke [mailto:[email protected]]
Gesendet: Dienstag, 13. Januar 2015 16:39
An: Eichner, Andreas - SID; [email protected]
Betreff: Re: [mapserver-users] Setting up a JSONP service

Hi Andreas,

I guess I'm still doing something wrong. If I use
http://localhost:8082/wfs?SERVICE=WFS&VERSION=1.1.0&request=GetFeature&TYP
ENAME=HU&outputformat=geojson&SRS=EPSG:3857&bbox=793732,6570204,793765,657
0228&callback=foobar

I'm getting the exact same output as before. What are you getting? Can
you post an example of your servers response?

Thank you so much.

Best

Lars

Am 13.01.2015 um 15:57 schrieb Eichner, Andreas - SID:
Arg.. outputformat=geojson also works, only had a typo...

-----Ursprüngliche Nachricht-----
Von: [email protected] [mailto:mapserver-users-
[email protected]] Im Auftrag von Eichner, Andreas - SID
Gesendet: Dienstag, 13. Januar 2015 15:18
An: '[email protected]'; [email protected]
Betreff: Re: [mapserver-users] Setting up a JSONP service

You need to append the "callback" parameter to the query string:


http://localhost:8082/wfs?SERVICE=WFS&VERSION=1.1.0&request=GetFeature&TYP
ENAME=HU&outputformat=geojson&SRS=EPSG:3857&bbox=793732,6570204,793765,657
0228&callback=foobar

You can test on the command line, too:
MS_MAPFILE=/path/to/mapfile ./mapserv
QUERY_STRING='service=WFS&version=1.1.0&request=GetFeature&typename=HU&

SRS=EPSG:3857&bbox=793732,6570204,793765,6570228&outputformat=application/
json; subtype=geojson; charset=utf-8&callback=foobar'

Please note that IMHO "geojson" alone isn't enough. The full mimetype
string should be used as reported by GetCapabilities.

HTH

-----Ursprüngliche Nachricht-----
Von: Lars Fricke [mailto:[email protected]]
Gesendet: Dienstag, 13. Januar 2015 14:22
An: Eichner, Andreas - SID; [email protected]
Betreff: Re: [mapserver-users] Setting up a JSONP service

Hi,

I compiled MapServer after applying the patch (at least I think it was
applied). Unfortunately the output is not JSONP format. Maybe I'm
getting something wrong. So here is what I did:
Applied
patch -p1 < jsonp.diff

I got an updated mapogroutput.c.

I then compiled with the following options:
cmake -DCMAKE_INSTALL_PREFIX=/opt \
           -DCMAKE_PREFIX_PATH="/usr/local;/opt" \
           -DWITH_CLIENT_WFS=ON \
           -DWITH_CLIENT_WMS=ON \
           -DWITH_CURL=ON \
           -DWITH_SOS=ON \
           -DWITH_PHP=0 \
           -DWITH_PYTHON=ON \
           -DWITH_SVGCAIRO=OFF \
           -DWITH_ORACLESPATIAL=0 \
           -DWITH_MSSQL2008=OFF \
           -DWITH_THREAD_SAFETY=ON \
           -DWITH_LIBXML2=ON \
           -DWITH_MYSQL=ON\
           -DWITH_SDE=0  .. >../configure.out.txt

Which goes through without any warning.

I do make next, getting a few warnings about the Python bindings but
nothing about mapogroutput (ecept that it was compiled). Then sudo
make
install. No warnings.
I then set a symlink to the new mapserv file inside cgi-bin and start
my
apache.

I changed my mapfile as you indicated:
WEB
       FOOTER "test"
       IMAGEPATH "/var/www/html/tmp/"
       TEMPPATH "/var/www/html/tmp/"
       IMAGEURL "/html/tmp/"
       METADATA
         "wfs_title"          "Test"
         "ows_onlineresource"    "http://localhost:8082/wfs?";
         "ows_enable_request"    "*"
         "ows_srs"    "EPSG:3857"
         "wfs_srs"    "EPSG:3857"
         "wfs_getfeature_formatlist" "geojson,csv,ogrgml"
         "wfs_encoding" "UTF-8"
       END # METADATA
       VALIDATION
           callback ".*"
       END
     END # WEB

OUTPUTFORMAT
      NAME "geojson"
      DRIVER "OGR/GEOJSON"
      MIMETYPE "application/json; subtype=geojson; charset=utf-8"
      FORMATOPTION "STORAGE=stream"
      FORMATOPTION "FORM=SIMPLE"
      FORMATOPTION "LCO:COORDINATE_PRECISION=5"
      FORMATOPTION "JSONP=%callback%"
     END

Unfortunately calling:

http://localhost:8082/wfs?SERVICE=WFS&VERSION=1.1.0&request=GetFeature&TYP
ENAME=HU&outputformat=geojson&SRS=EPSG:3857&bbox=793732,6570204,793765,657
0228

gives me a result as before without your changes:
{
"type": "FeatureCollection",
"crs": { "type": "name", "properties": { "name":
"urn:ogc:def:crs:EPSG::3857" } },
"features": [
{ "type": "Feature", "properties": { "gml_id": "", "UMRING_ID":
"36245586"}, "geometry": { "type": "Polygon", "coordinates": [ [ [
793757.73417, 6570202.31642 ], [ 793762.85989, 6570195.63821 ], [
793770.20682, 6570201.30901 ], [ 793765.08276, 6570207.98411 ], [
793757.73417, 6570202.31642 ] ] ] } },
{ "type": "Feature", "properties": { "gml_id": "", "UMRING_ID":
"36245583"}, "geometry": { "type": "Polygon", "coordinates": [ [ [
793752.31968, 6570224.89917 ], [ 793747.96097, 6570230.48534 ], [
793732.07033, 6570218.01607 ], [ 793740.12777, 6570207.69188 ], [
793742.99908, 6570209.94649 ], [ 793747.5696, 6570204.08902 ], [
793761.16105, 6570214.75134 ], [ 793752.94726, 6570225.27397 ], [
793752.31968, 6570224.89917 ] ] ] } },
{ "type": "Feature", "properties": { "gml_id": "", "UMRING_ID":
"36245550"}, "geometry": { "type": "Polygon", "coordinates": [ [ [
793735.55884, 6570231.00753 ], [ 793738.78194, 6570226.81082 ], [
793746.26949, 6570232.5959 ], [ 793743.04798, 6570236.79266 ], [
793735.55884, 6570231.00753 ] ] ] } }
]
}

I also tried this with an AJAX call from Javascript, giving me the
exactly same result.

I get an error message trying to use the result in Leaflet telling me
a
";" is missing. I assume it should look like this:

var testlayer = [{
"type": "FeatureCollection",
"crs": { "type": "name", "properties": { "name":
"urn:ogc:def:crs:EPSG::3857" } },
"features": [
{ "type": "Feature", "properties": { "gml_id": "", "UMRING_ID":
"36245586"}, "geometry": { "type": "Polygon", "coordinates": [ [ [
793757.73417, 6570202.31642 ], [ 793762.85989, 6570195.63821 ], [
793770.20682, 6570201.30901 ], [ 793765.08276, 6570207.98411 ], [
793757.73417, 6570202.31642 ] ] ] } },
{ "type": "Feature", "properties": { "gml_id": "", "UMRING_ID":
"36245583"}, "geometry": { "type": "Polygon", "coordinates": [ [ [
793752.31968, 6570224.89917 ], [ 793747.96097, 6570230.48534 ], [
793732.07033, 6570218.01607 ], [ 793740.12777, 6570207.69188 ], [
793742.99908, 6570209.94649 ], [ 793747.5696, 6570204.08902 ], [
793761.16105, 6570214.75134 ], [ 793752.94726, 6570225.27397 ], [
793752.31968, 6570224.89917 ] ] ] } },
{ "type": "Feature", "properties": { "gml_id": "", "UMRING_ID":
"36245550"}, "geometry": { "type": "Polygon", "coordinates": [ [ [
793735.55884, 6570231.00753 ], [ 793738.78194, 6570226.81082 ], [
793746.26949, 6570232.5959 ], [ 793743.04798, 6570236.79266 ], [
793735.55884, 6570231.00753 ] ] ] } }
]
}];

I'm not sure what is going on. Am I not applying the changes correctly
or is my call wrong?

Thanks for you great support.

Best

Lars


Am 09.01.2015 um 15:30 schrieb Eichner, Andreas - SID:
Hi,

I've attached a quick'n dirty solution (against master). When applied
to
mapogroutput.c you can set a JSONP formatoption to the callback name:

OUTPUTFORMAT
       NAME 'geojson'
       DRIVER 'OGR/GEOJSON'
       MIMETYPE 'application/json; subtype=geojson; charset=utf-8'
       FORMATOPTION 'STORAGE=stream'
       FORMATOPTION 'FORM=simple'
       FORMATOPTION 'LCO:COORDINATE_PRECISION=5'
       FORMATOPTION 'JSONP=%callback%'
END

This needs of course a WEB.VALIDATION:
WEB
     ...
     VALIDATION
       callback '.*'
     END
END

Would be great if you can test if this works (looks good to me). The
Devs might have a look if this could be integrated into master until
OGR
has an appropriate layer creation option (solution described by Even).
Greetings

-----Ursprüngliche Nachricht-----
Von: [email protected] [mailto:mapserver-
users-
[email protected]] Im Auftrag von Lars Fricke
Gesendet: Freitag, 9. Januar 2015 11:24
An: [email protected]
Betreff: Re: [mapserver-users] Setting up a JSONP service

Hello,

first of all: Thank you for your support!
Sorry for the late reply but I unfortunately was ill.

@ Steve:
I read about templating but also read that it is slower?
I do not have a lot of experience in writing templates. Would you
mind
sharing a JSONP template?

@ Even: Thank you for your thoughts. Who would implement that change
though? I'm afraid I can't.

@ Jeff: I followed those links but I only found threads referring to
GeoServer or that were not related to my question. The GDAL page I
did
study and that's how I managed to set up the GeoJSON service but
thats
not the same unfortunately as it conflicts with the same origin
policy.
Best

Lars

Am 30.12.2014 um 16:24 schrieb Lime, Steve D (MNIT):
You can also use MapServer templates to accomplish this. It's a
little
more work since you have to write the template but it's quite
flexible
then. Usually I write the template to produce JSON and then use a
simple
wrapper template to produce JSONP. For example, jsonp.js looks like
(callback is passed in):
// MapServer Template
[callback](
      [include src="templates/json.js"]
)

Output formats look like:

      OUTPUTFORMAT
        NAME 'JSON'
        DRIVER 'TEMPLATE'
        MIMETYPE 'application/json;'
        FORMATOPTION 'FILE=templates/json.js'
        FORMATOPTION 'ATTACHMENT=service.json'
      END

      OUTPUTFORMAT
        NAME 'JSONP'
        DRIVER 'TEMPLATE'
        MIMETYPE 'application/json;'
        FORMATOPTION 'FILE=templates/jsonp.js'
        FORMATOPTION 'ATTACHMENT=service.json'
      END

Steve

-----Original Message-----
From:[email protected]  [mailto:mapserver-
users-
[email protected]] On Behalf Of Lars Fricke
Sent: Monday, December 29, 2014 5:34 AM
To:[email protected]
Subject: [mapserver-users] Setting up a JSONP service

Dear List,

I have a WFS service running under MapServer that I would like to
operate as JSONP service. I managed to set GEOJSON as output format
but
I
get "Cross-Origin-Request Blocked" if I try to call it with a
Javascript
client (using Leaflet L.layerJSON.
The question is: Is it possible to set up a JSONP service from
Mapserver
and if yes, how? My current mapfile looks like this (relevant
parts):
"
# in WEB - METADATA
"wfs_getfeature_formatlist" "geojson,csv,ogrgml"

OUTPUTFORMAT
        NAME "geojson"
        DRIVER "OGR/GEOJSON"
        MIMETYPE "application/json; subtype=geojson; charset=utf-8"
        FORMATOPTION "STORAGE=stream"
        FORMATOPTION "FORM=SIMPLE"
        FORMATOPTION "LCO:COORDINATE_PRECISION=5"
       END
"
If this would already be a correct JSONP service, I have to look on
the
Leaflet side for the error...
Thanks for your help.

Cheers

Lars
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users

_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users


_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to