[OSGeoJapan-discuss] 【質問】MAPファイルについて教えてください。

楠本(MSK) mkusumoto @ msk-web.co.jp
2015年 11月 30日 (月) 17:50:34 PST


楠本です。

SQL文の解決しました。有難う御座います。

もう1つ問題があり、MAPファイルへの引数の指定より、CONNECTIONで引数を設 
定しパスワードが登録されることは確認できたのですが、
DATAのSQL文に引数を指定すると正常に機能してくれません。
%elev2item%に直接数値を設定すると正常に動作することは確認できました。

<MAPファイル抜粋>
VALIDATION
     "userid" '^[0-9a-zA-Z_.*/+\-]+$'
     "passwd" '^[0-9a-zA-Z_.*/+\-]+$'
     "elev2item" '^[0-9]+$'
END
CONNECTION "host=localhost dbname=test_db user=%userid% 
password=%passwd% port=5432"
DATA "geom FROM (select tbl_test.gid as gid, tbl_test.geom as geom from 
tbl_test where elev2<%elev2item%) as TEST_TABLE_NAME using srid=4326 
using unique gid"

※参考にさせて頂いたサイト
http://mapabc.wikidot.com/ref:mapfile-variablesubstitution

重ねて申し訳ございませんが、ご教授よろしくお願いします。

On 2015/11/30 21:00, hayashi @ apptec.co.jp wrote:
> 楠本様
>
> こんにちは。
>
>  DATA "geom FROM (select tbl_test.gid as gid, tbl_test.geom as geom 
> from tbl_test) as TEST_TABLE_NAME using srid=4326 using unique gid"
>
> のようにサブクエリーに名前をつけてできませんか?
>
> http://mapserver.org/input/vector/postgis.html#data-access-connection-method 
>
>
> (2015/11/30 20:04), 楠本(MSK) wrote:
>> ご教授宜しくお願いします。楠本と申します。
>>
>> 早速ですが、MapServer(ms4w)を使用して地図を表示するのに、MapScriptを 
>> 使用 して表
>> 示させたいのですが、
>> メーリングリストご覧の皆様からご教授貰えればと思っています。
>>
>> ① OpenLayers(WMS)からMapserverに対してパラメータ(Javascriptの変数)を 
>> 渡す。
>>
>> <JavaScript 抜粋>
>> var testLayer = new OpenLayers.Layer.WMS("MAPSCRIPTテスト",
>> "/cgi-bin/mapserv.exe?userid=123&passwd=xyz",
>> {
>> map : "c:\test.map",
>> layers: "layertest",
>> format: "image/jpeg",
>> transparent: true
>> }, {
>> isBaseLayer : false,
>> opacity:1.0
>> } );
>>
>>
>> ② ①で指定した引数をMAPファイル内では以下の様に設定して使用しています。
>> <MAPファイル>
>> MAP
>> NAME "MOGAMI_TEST"
>> CONFIG "MS_ERRORFILE" "/ms4w/tmp/ms_error.txt"
>> WEB
>> METADATA
>> "wms_title" "WMS Server"
>> "wms_srs" "EPSG:3857"
>> "ows_enable_request" "*"
>> END
>> END
>> PROJECTION
>> "init=epsg:4326"
>> END
>> LAYER
>> CONNECTIONTYPE postgis
>> NAME "NAME"
>> VALIDATION
>> "userid" '^[0-9a-zA-Z_.*/+\-]+$'
>> "passwd" '^[0-9a-zA-Z_.*/+\-]+$'
>> END
>> CONNECTION "host=localhost dbname=test_db user=postgres 
>> password=%passwd%
>> port=5432"
>> PROCESSING "CLOSE_CONNECTION=DEFER"
>> # DATA "geom FROM (select tbl_test.gid as gid, tbl_test.geom as geom 
>> from
>> tbl_test) using srid=4326 using unique gid"
>> DATA "geom FROM tbl_test"
>> STATUS ON
>> TYPE LINE
>> CLASSITEM "elev2"
>> CLASS
>> EXPRESSION ( ([elev2] > 1) And ([elev2] <= 100.0))
>> STYLE
>> COLOR 255 0 0
>> WIDTH 2.0
>> END
>> END
>> END
>> END
>>
>>  上記の設定でマップの描画は正常に動作しました。
>>  
>>  ここで、②のDATA行を以下の様に設定したいと考えています。
>> DATA "geom FROM (select tbl_test.gid as gid, tbl_test.geom as geom from
>> tbl_test) using srid=4326 using unique gid"
>>
>>  第一に、上記の様に設定を行うと、「(」でエラーとなってSQL文が正常に 
>> 機能 してく
>> れません。
>>  SQL文の指定の方法についてどうすれば指定できるのでしょうか?
>>
>>  また、(select tbl_test.gid as gid, tbl_test.geom as geom from 
>> tbl_test)の部分
>> を①からの引数で指定したいのですが、
>> その様な引数の指定を行うことは可能でしょうか?
>>  可能であれば、その方法についてご教示頂けないでしょうか?
>>
>>  目的としては、postGISで探索するSQL文をWebページからの指定で任意の 
>> デー タをチョ
>> イスして表示することが出来るようにしたい
>> と考えています。
>>  最終的には、以下の様なデータ構造を持ったテーブルから、任意の結果を 
>> 導き だしたい。
>>  
>>  DATA-1,DATA-2,・・・・・DATA-n
>>  
>>  DATA-1とDATA-2の最大値をマップを表示させる。
>>  DATA-iとDATA-jの最大値をマップを表示させる。
>>
>>  これらをホームページ上から指定した任意のデータカラムで実現したいと 
>> 考え ており
>> ます。
>>
>>
>> _______________________________________________
>> OSGeoJapan-discuss mailing list
>> OSGeoJapan-discuss @ lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>
>



More information about the OSGeoJapan-discuss mailing list