YouTube | Facebook | X(Twitter) | RSS

住所ロケータでアドレスマッチングする方法

2016/9/1 (木)

'住所ロケータの取得
Dim t As System.Type = Type.GetTypeFromProgID("esriLocation.LocatorManager")
Dim obj As System.Object = Activator.CreateInstance(t) 'シングルトン
Dim pLocatorManager As ILocatorManager2 = TryCast(obj, ILocatorManager2)
Dim pLocatorWorkspace As ILocatorWorkspace = pLocatorManager.GetLocatorWorkspace("<ロケータを含むのジオデータベースのパス>")
Dim pLocator As ILocator = pLocatorWorkspace.GetLocator("<ロケータ名>")
 
'入力住所文字列の設定
Dim pAddressInputs As IAddressInputs = TryCast(pLocator, IAddressInputs)
Dim pFields As IFields = pAddressInputs.AddressFields
Dim pPropertySet As IPropertySet = New PropertySetClass()
pPropertySet.SetProperty(pFields.Field(0).Name, Me.AddressTextBox.Text)
 
'アドレスマッチング
Dim pAddressGeocoding As IAddressGeocoding = TryCast(pLocator, IAddressGeocoding)
Dim resultPropertySet As IPropertySet = pAddressGeocoding.MatchAddress(pPropertySet)
 
'複数候補を取得する場合
Dim pAddressCandidates As IAddressCandidates = CType(pAddressGeocoding, IAddressCandidates)
Dim pArray As IArray = pAddressCandidates.FindAddressCandidates(pPropertySet)
Dim resultCount As Integer = pArray.Count  '結果件数
resultPropertySet = pArray.Element(0)  '結果の要素取得
 
 
'出力
Dim names As Object = Nothing
Dim values As Object = Nothing
resultPropertySet.GetAllProperties(names, values)
Dim namesArray() As String = TryCast(names, String())
Dim valuesArray() As Object = TryCast(values, Object())
Dim length As Integer = namesArray.Length
Dim pPoint As IPoint = Nothing
Dim outString As String = ""
For i As Integer = 0 To length - 1
    If namesArray(i) <> "Shape" Then
        outString += namesArray(i) + " :" + Constants.vbTab + valuesArray(i).ToSnstants.vbLf
    Else
        pPoint = TryCast(valuesArray(i), IPoint)
        If pPoint IsNot Nothing AndAlso (Not pPoint.IsEmpty) Then
            outString &= "X:" & Constants.vbTab & pPoint.X.ToString() + Constants.vbLf
            outString &= "Y:" & Constants.vbTab & pPoint.Y.ToString() + Constants.vbLf
        End If
    End If
Next i
 
outString += Constants.vbLf
  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, ArcGIS
-,