Select with Buffer

TatukGIS Internet Server Samples

Selected states:
1 bielskie
2 bydgoskie
3 elblaskie
4 gdanskie
5 katowickie
6 kieleckie
7 krakowskie
8 lubelskie
9 plockie
10 radomskie
11 rzeszowskie
12 siedleckie
13 tarnobrzeskie
14 tarnowskie
15 torunskie
16 warszawskie
17 wloclawskie

Source code

This TatukGIS Internet Server sample demonstrates the following:

  • use buffers to create shapes
  • set buffer size
  • use FindFirst and FindNext to search for shapes on a layer
  • use the function XGIS_Topology.Create
  • use the topology function MakeBuffer
In this sample, select the buffer size to perform the selection of all polygons that at least partially overlap with the area of the buffer. The names of the selected polygons are listed in the box below the map window.

buffers2.aspx    Top

                            
                            
                            
                            
<%@ Page Language="VB" Debug="True" %>
<%@ Register TagPrefix="ttkGIS" Namespace="TatukGIS.IS" Assembly="TatukGIS.IS" %>
<%@ import Namespace="System.Data" %>
<script runat="server">

    Dim GisUtils As API.XGIS_Utils

    Sub GIS_FullExtent_Click(sender As Object, e As ImageClickEventArgs)
        GIS.FullExtent
    End Sub
    
    Sub GIS_ZoomIn_Click(sender As Object, e As ImageClickEventArgs)
        GIS.ZoomIn
    End Sub
    
    Sub GIS_ZoomOut_Click(sender As Object, e As ImageClickEventArgs)
        GIS.ZoomOut
    End Sub
    
    Sub GIS_Smaller_Click(sender As Object, e As ImageClickEventArgs)
        GIS.Width  = Unit.Pixel( GIS.Width.Value  - 54 )
        GIS.Height = Unit.Pixel( GIS.Height.Value - 40 )
    End Sub
    
    Sub GIS_Larger_Click(sender As Object, e As ImageClickEventArgs)
        GIS.Width  = Unit.Pixel( GIS.Width.Value  + 54 )
        GIS.Height = Unit.Pixel( GIS.Height.Value + 40 )
    End Sub

    Sub GIS_Load(sender As Object, e As EventArgs)
        GisUtils =  New API.XGIS_Utils

        Dim i as integer
        Dim lb as API.XGIS_LayerVector
    
        GIS.Open(GisUtils.GisSamplesDataDir & "poland2.ttkgp")
    
        For i = 0 To GIS.API.Items.Count - 1
           GIS.API.Items.Item(i).UseConfig = False
        Next
        lb = New API.XGIS_LayerVector()
        lb.Name = "buffers"
        lb.Transparency = 60
        lb.Params.Area.Color = System.Convert.ToUInt32(RGB(100,150,220))
        GIS.API.Add(lb)
        GIS.FullExtent()
    
        if not Page.IsPostBack or (session("buf") is Nothing) then
            session("buf") = 1
            Button1.BackColor = System.Drawing.Color.SteelBlue
            Button1.ForeColor = System.Drawing.Color.White
        end if
    End Sub
    
    Sub GIS_Paint(sender As Object, e As PaintEventArgs)
    
        dim ll As API.XGIS_LayerVector
        dim lb As API.XGIS_LayerVector
        dim shp As API.XGIS_Shape
        dim tmp As API.XGIS_Shape
        dim buf As API.XGIS_Shape
        dim tpl As API.XGIS_Topology

        dim i As Integer
        dim Table as dataTable = New DataTable()
        dim dr as DataRow
    
        Table.Columns.Add("Sid", GetType(String))
        Table.Columns.Add("Name", GetType(String))        
    
        'find buffer for vistual river
        ll = GIS.API.Get("rivers")
        If ll Is Nothing Then
            Exit Sub
        End If
    
        'find buffer for vistual river
        lb = GIS.API.Get("buffers")
        If lb Is Nothing Then
            Exit Sub
        End If
    
        ll.MoveFirst(GisUtils.GisWholeWorld, "name='Wisla'", Nothing, "", True)
        If Not ll.EOF Then
            shp = ll.Shape
        Else
            shp = Nothing
        End If
        If shp Is Nothing Then
            Exit Sub
        End If
    
        tpl = New API.XGIS_Topology()
        tmp = tpl.MakeBuffer(shp, session("buf") * 1000, 0, False)
        If Not tmp Is Nothing Then
            buf = lb.AddShape(tmp)
            tmp = Nothing
        Else
            buf = Nothing
        End If
    
        tpl = Nothing
    
        'find all states crossing by buffer of Vistula river
        If buf Is Nothing Then
            Exit Sub
        End If
    
        ll = GIS.API.Get("states")
        If ll Is Nothing Then
            Exit Sub
        End If
    
        tmp = ll.FindFirst(buf.Extent, "", Nothing, "", True)
        i=1
        While Not tmp Is Nothing
            If buf.IsCommonPoint(tmp) Then
                tmp = tmp.MakeEditable
                tmp.Params.Area.Color = Convert.ToUInt32(RGB(0, 40, 200))
                tmp.Params.Area.Pattern = API.XBrushStyle.XbsSolid

                dr = Table.NewRow()
                dr(0) = cstr(i)
                dr(1) = tmp.GetField("name")
                Table.Rows.Add(dr)
                i = i + 1
            End If
            tmp = ll.FindNext
        End While
        StatesList.DataSource = Table.DefaultView
        StatesList.DataBind
    
        GIS.Draw()
    End Sub

    Sub UnselectButtons()

        Button1.BackColor = System.Drawing.Color.LightGray
        Button1.ForeColor = System.Drawing.Color.Black
        Button2.BackColor = System.Drawing.Color.LightGray
        Button2.ForeColor = System.Drawing.Color.Black
        Button3.BackColor = System.Drawing.Color.LightGray
        Button3.ForeColor = System.Drawing.Color.Black
        Button4.BackColor = System.Drawing.Color.LightGray
        Button4.ForeColor = System.Drawing.Color.Black
        Button5.BackColor = System.Drawing.Color.LightGray
        Button5.ForeColor = System.Drawing.Color.Black
        Button6.BackColor = System.Drawing.Color.LightGray
        Button6.ForeColor = System.Drawing.Color.Black
        Button7.BackColor = System.Drawing.Color.LightGray
        Button7.ForeColor = System.Drawing.Color.Black
        Button8.BackColor = System.Drawing.Color.LightGray
        Button8.ForeColor = System.Drawing.Color.Black
        Button9.BackColor = System.Drawing.Color.LightGray
        Button9.ForeColor = System.Drawing.Color.Black
        Button10.BackColor = System.Drawing.Color.LightGray
        Button10.ForeColor = System.Drawing.Color.Black
        Button11.BackColor = System.Drawing.Color.LightGray
        Button11.ForeColor = System.Drawing.Color.Black
        Button12.BackColor = System.Drawing.Color.LightGray
        Button12.ForeColor = System.Drawing.Color.Black
    End Sub


    Sub Button1_Click(sender As Object, e As EventArgs)
        session("buf") = 1
        UnselectButtons()
        Button1.BackColor = System.Drawing.Color.SteelBlue
        Button1.ForeColor = System.Drawing.Color.White
    End Sub

    Sub Button2_Click(sender As Object, e As EventArgs)
        session("buf") = 20
        UnselectButtons()
        Button2.BackColor = System.Drawing.Color.SteelBlue
        Button2.ForeColor = System.Drawing.Color.White
    End Sub


    Sub Button3_Click(sender As Object, e As EventArgs)
        session("buf") = 40
        UnselectButtons()
        Button3.BackColor = System.Drawing.Color.SteelBlue
        Button3.ForeColor = System.Drawing.Color.White
    End Sub

    Sub Button4_Click(sender As Object, e As EventArgs)
        session("buf") = 60
        UnselectButtons()
        Button4.BackColor = System.Drawing.Color.SteelBlue
        Button4.ForeColor = System.Drawing.Color.White
    End Sub

    Sub Button5_Click(sender As Object, e As EventArgs)
        session("buf") = 80
        UnselectButtons()
        Button5.BackColor = System.Drawing.Color.SteelBlue
        Button5.ForeColor = System.Drawing.Color.White
    End Sub

    Sub Button6_Click(sender As Object, e As EventArgs)
        session("buf") = 100
        UnselectButtons()
        Button6.BackColor = System.Drawing.Color.SteelBlue
        Button6.ForeColor = System.Drawing.Color.White
    End Sub

    Sub Button7_Click(sender As Object, e As EventArgs)
        session("buf") = 120
        UnselectButtons()
        Button7.BackColor = System.Drawing.Color.SteelBlue
        Button7.ForeColor = System.Drawing.Color.White
    End Sub

    Sub Button8_Click(sender As Object, e As EventArgs)
        session("buf") = 140
        UnselectButtons()
        Button8.BackColor = System.Drawing.Color.SteelBlue
        Button8.ForeColor = System.Drawing.Color.White
    End Sub

    Sub Button9_Click(sender As Object, e As EventArgs)
        session("buf") = 160
        UnselectButtons()
        Button9.BackColor = System.Drawing.Color.SteelBlue
        Button9.ForeColor = System.Drawing.Color.White
    End Sub

    Sub Button10_Click(sender As Object, e As EventArgs)
        session("buf") = 180
        UnselectButtons()
        Button10.BackColor = System.Drawing.Color.SteelBlue
        Button10.ForeColor = System.Drawing.Color.White
    End Sub

    Sub Button11_Click(sender As Object, e As EventArgs)
        session("buf") = 200
        UnselectButtons()
        Button11.BackColor = System.Drawing.Color.SteelBlue
        Button11.ForeColor = System.Drawing.Color.White
    End Sub

    Sub Button12_Click(sender As Object, e As EventArgs)
        session("buf") = 220
        UnselectButtons()
        Button12.BackColor = System.Drawing.Color.SteelBlue
        Button12.ForeColor = System.Drawing.Color.White
    End Sub

</script>
<html>
<head>
    <title>TatukGIS IS Sample - Buffers 2</title>
    <link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <a name="top">
    <h1>Buffers 2
    </h1>
    <h2 class="comment"><a href="../../samplesAPI.htm">TatukGIS Internet Server Samples</a>
    </h2>
    <form runat="server">
        <table cellspacing="0" cellpadding="0" border="0">
            <tbody>
                <tr>
                    <td>
                        <asp:ImageButton id="GIS_FullExtent" onclick="GIS_FullExtent_Click" runat="server" ImageUrl="/TatukGIS_IS8/img/fullextent.gif"></asp:ImageButton>
                        <asp:ImageButton id="GIS_ZoomIn" onclick="GIS_ZoomIn_Click" runat="server" ImageUrl="/TatukGIS_IS8/img/zoomin.gif"></asp:ImageButton>
                        <asp:ImageButton id="GIS_ZoomOut" onclick="GIS_ZoomOut_Click" runat="server" ImageUrl="/TatukGIS_IS8/img/zoomout.gif"></asp:ImageButton>
                        <asp:RadioButtonList id="RadioButtonList1" runat="server" RepeatDirection="Horizontal"></asp:RadioButtonList>
                    </td>
                    <td align="right">
                        <asp:ImageButton id="GIS_Smaller" onclick="GIS_Smaller_Click" runat="server" ImageUrl="/TatukGIS_IS8/img/smaller.gif"></asp:ImageButton>
                        <asp:ImageButton id="GIS_Larger" onclick="GIS_Larger_Click" runat="server" ImageUrl="/TatukGIS_IS8/img/larger.gif"></asp:ImageButton>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <p>
                            <ttkGIS:XGIS_VIEWERIS id="GIS" onclick="GIS_Click" runat="server" OnPaint="GIS_Paint" BorderWidth="1px" BorderColor="CornflowerBlue" OnLoad="GIS_Load" Width="360px" Height="280px"></ttkGIS:XGIS_VIEWERIS>
                        </p>
                    </td>
                </tr>
            </tbody>
        </table>
        <p>
            <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="1"></asp:Button>
            <asp:Button id="Button2" onclick="Button2_Click" runat="server" Text="20"></asp:Button>
            <asp:Button id="Button3" onclick="Button3_Click" runat="server" Text="40"></asp:Button>
            <asp:Button id="Button4" onclick="Button4_Click" runat="server" Text="60"></asp:Button>
            <asp:Button id="Button5" onclick="Button5_Click" runat="server" Text="80"></asp:Button>
            <asp:Button id="Button6" onclick="Button6_Click" runat="server" Text="100"></asp:Button>
            <asp:Button id="Button7" onclick="Button7_Click" runat="server" Text="120"></asp:Button>
            <asp:Button id="Button8" onclick="Button8_Click" runat="server" Text="140"></asp:Button>
            <asp:Button id="Button9" onclick="Button9_Click" runat="server" Text="160"></asp:Button>
            <asp:Button id="Button10" onclick="Button10_Click" runat="server" Text="180"></asp:Button>
            <asp:Button id="Button11" onclick="Button11_Click" runat="server" Text="200"></asp:Button>
            <asp:Button id="Button12" onclick="Button12_Click" runat="server" Text="220"></asp:Button>
        </p>
        <p>
            <asp:Table id="Table_Desc" runat="server" BorderWidth="2px" BorderColor="Navy" Width="364px" BackColor="SkyBlue" Visible="True">
                <asp:TableRow>
                    <asp:TableCell>
                        <asp:Label runat="server" id="Lbl_Desc_1" font-bold="True">Selected states:</asp:Label>
                        <br />
                        <asp:DataList runat="server" ID="StatesList">
                            <ItemTemplate>
                                <asp:Label id="Sid" runat="server" text='<%# cstr(Container.DataItem("Sid")) %>' /> <asp:Label id="Name" runat="server" text='<%# Container.DataItem("name") %>' />
                            </ItemTemplate>
                        </asp:DataList>
                    </asp:TableCell>
                </asp:TableRow>
            </asp:Table>
        </p>
    </form>
    </a>
</body>
</html>