Mono上でのインタフェース作成

一つ前の記事で、自分の愚かさにたじろいでいますが、では、Mono上のVBでインタフェースを構築する方法は何があるだろうか?というと、以下の方法しか見当たりません。
Windows Form をimport して、コードベースでインタフェースを構築する

これは、UNIX時代のMotifなどを彷彿とさせる、昔感いっぱいで非常に抵抗を感じます
Glade3 インタフェースビルダー

さまざまな部品(widget)を選んでWindow(Form)上に配置できるので、やる気を起こしてくれます。けれども、各部品がどんなイベントを受け付けて、プロパティやメソッドを持っているのかを知るのがとても大変です。Gladeに関する情報や本は、GTK+などのキーワードでいろいろ出てくるのですが、当然CやC++で書かれていますが、ここで言語の壁を乗り越える気力が出ず、萎えます。。

そんなこんなで、Mono+Monodevelop+VB+MapScript という領域は、会社のお仕事ベースの範疇を越えるので、これ以上の追求はやめにすることにしました。
また、VB+MapScriptというのも、お仕事上のあくまでインハウスRADとして追求することにしようと思いました。

ただ、マルチプラットフォームで、グラフィカルなインタフェース作成とコード補完機能を持った開発環境で、MapScriptやGDAL/OGRの開発環境構築を、あきらめたわけではありません。

次の何かを探しているところです。

そういう意味で、バグな明保野で、インハウスVBプログラムが、オープンソースなMapServerやGDAL/OGRをいかに使い倒そうかというチャレンジをしたのは、自分にとってとてもいいことでした。おかげで、VB厨房であることすらもわからない状況からは抜け出れるのではないかと思っている次第です。
bugna | mono | 11:27 | comments(0) | trackbacks(0) | - | - |

MonoでVB厨房のおろかさを思い汁

Visual Basicで、MapScriptを使うということに執着しているのは、MapScriptやGDAL/OGRの持つ豊富な便利な機能を手早く利用できることに、とても魅力を感じているからである。

Visual StuidoないしVisual Basic 2005 Express などに搭載されている、IntelliSense(インテリセンス)はコード補完機能であり、またオブジェクトブラウザは、クラスの構造をビジュアルに見れるとても便利な機能である。

この2つと、フォームエディターによるビジュアルなインタフェース作成と、それぞれの部品をダブルクリックしたり、エディター上で使用できるイベントを一覧から選ぶだけで、インタフェースと実行するコードを結びつけることができるため、さまざまなインタラクションを仕込むことがあまり苦にはならない故、RADツールとしてある程度のシェアを得ているのだと思っている。

ところで、bugnaの母艦はMacBookなので、MonoでMapScript(VB)Mac OS XでMapScript(VB)の用な記事を書いて、VBでMapScriptは、実はマルチプラットフォームでいけるぞ!、と言ってみたかったが、壁にぶち当たった。

それは、WindowsのVisual Basicによる開発と、Monodevelop上でのVBNCを利用した開発は、インタフェース作成という点が大きく違うということにいまさら気づいたのである。。。
続きを読む >>
bugna | mono | 11:05 | comments(0) | trackbacks(0) | - | - |

VB.NETでMapScriptを動かす(コード編:フォームに地図を表示する)

フォームに地図を表示するソースです。
Visual Basic 2005 Express で新規にプロジェクトを作成します。
作成したら一度「すべてを保存」でファイル郡を保存します。
vbm015.png
vbm016.png
vbm019.png

Visual Basic 2005 Express では、新規にプロジェクトを作成すると、デフォルトでは、
以下のようなフォルダ構成で、ファイル郡が作成されます。

My Documents
└Visual Studio 2005
  └─MapScriptTest ← 今回作成したプロジェクト名
      ├─bin
      │  ├─Debug
      │  │  ├─data ←自分で新規に作成したフォルダ。
      │  │  │               ここに、countries_simpl.shp他を入れておく
      │  │  └─tmp ←自分で新規に作成したフォルダ。
      │  │           ここに地図画像が作成される
      │  └─Release
      ├─My Project
      └─obj
          ├─Debug
          │  └─TempPE
          └─Release

サンプルのShapefileは、下記から取得します。
■FreeGIS WolrdData Simple
http://ftp.intevation.de/freegis/worlddata/freegis_worlddata-0.1_simpl.tar.gz

取得したShapefileは解凍後、上記のdataフォルダに保存します。

参照の追加で、mapscript_csharp.dll を追加します。
VB.NETでMapScriptを動かす(準備編) を一度やっていると、最近使用したファイルに追加されています。
vbm017.png
vbm018.png
Form1のコードを表示します。
下記のソースをまるごと、コピペします。
デバッグ−デバッグ開始 で、無事にコンパイルされると、フォームに地図画像が表示されます。



Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim _map As New mapObj("")
        Dim _extent_def As New rectObj(-180, -90, 180, 90, 0)
        Dim _proj As String
        Dim _path As String
        Dim _intsubst As Integer
        Dim _mapfile As String
        Dim _ImageLocation As String = "¥tmp¥"
        Dim _DataLocation As String = "¥data¥"
        Dim _DefaultMapFileName As String = "default.map"
        Dim _color() As Integer
        Dim _outlinecolor() As Integer
        Dim _layer As layerObj
        Dim _class As classObj
        Dim _style As styleObj
        Dim _img As imageObj

        _path = Application.ExecutablePath.ToUpper
        _intsubst = _path.LastIndexOf("¥")
        _path = _path.Substring(0, _intsubst)
        _mapfile = _path & _DataLocation & _DefaultMapFileName


        _proj = "proj=latlong,ellps=WGS84"
        _color = New Integer() {180, 180, 250}

        _map.setSize(300, 300)
        _map.setExtent(_extent_def.minx, _extent_def.miny, _extent_def.maxx, _extent_def.maxy)
        _map.imagecolor.setRGB(_color(0), _color(1), _color(2))
        _map.units = MS_UNITS.MS_DD
        _map.shapepath = _path & _DataLocation

        _map.setProjection(_proj)
        _map.web.imagepath = _path & _ImageLocation
        _map.web.imageurl = "/tmp"

        _layer = New layerObj(_map)
        _layer.name = "countries"
        _layer.type = MS_LAYER_TYPE.MS_LAYER_POLYGON
        _layer.status = 1
        _layer.data = "countries_simpl"
        _layer.setProjection("init=epsg:4326")

        _class = New classObj(_layer)
        _class.name = "Countries"

        _outlinecolor = New Integer() {100, 100, 100}
        _color = New Integer() {200, 200, 200}
        _style = New styleObj(_class)
        _style.outlinecolor.setRGB(_outlinecolor(0), _outlinecolor(1), _outlinecolor(2))
        _style.color.setRGB(_color(0), _color(1), _color(2))

        _img = _map.draw
        _img.save(_map.web.imagepath & "bugna." & _img.format.extension, _map)


        Dim BM As New Bitmap(_map.web.imagepath & "bugna." & _img.format.extension)

        With Me
            .Width = BM.Width
            .Height = BM.Height
            .BackgroundImage = BM
        End With

        _DefaultMapFileName = _path & _DataLocation & _DefaultMapFileName
        _map.save(_DefaultMapFileName)
    End Sub
End Class



bugna | mono | 17:37 | comments(0) | trackbacks(0) | - | - |

mono による MapScript の利用(概要編)

VB.NETで・・・という大前提をつけて情報を整理しているこのサイトですが、実行環境としては、Windowsより、Linux や Mac OS X のほうが興味があります。

ずっとVisual Basic でシステム開発をしてきたので、MapServer も Windows環境下でいかに動かす(利用する)かというところに重きを置いているのですが、それは会社内での環境がそうであるからで、技術的な興味は、会社では必ずしも役に立たない、Linux や Mac OS X のほうにあります。



続きを読む >>
bugna | mono | 01:36 | comments(0) | trackbacks(0) | - | - |
1/1PAGES | |

01
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--