Create Buffers

TatukGIS Internet Server Samples

Source code

This TatukGIS Internet Server sample demonstrates the creation of buffers and buffer size from a polygon shape using the TGIS_Topology class MakeBuffer function.

Select one of the polygon shapes and then specify the size of the buffer.


buffers1.aspx    Top

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

    Dim GisUtils As API.XGIS_Utils
    Dim shp_id As Integer
    
    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
        Session("Zoom") = GIS.Zoom
    End Sub
    
    Sub GIS_ZoomOut_Click(sender As Object, e As ImageClickEventArgs)
        GIS.ZoomOut
        Session("Zoom") = GIS.Zoom
    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 )
        Session("Zoom") = GIS.Zoom
    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 )
        Session("Zoom") = GIS.Zoom
    End Sub
    
    Sub GIS_Load(sender As Object, e As EventArgs)
        GisUtils = New API.XGIS_Utils

        Dim lb As API.XGIS_LayerVector

        GIS.Open( GisUtils.GisSamplesDataDir + "topology.shp" )
        GIS.ImageType = XgisImageType.PNG24
        
       'create a layer for buffer
        lb = New API.XGIS_LayerVector
        lb.Name = "buffer"
        lb.Transparency = 50
        lb.Params.Area.Color = RGB(25, 50, 220)
        GIS.API.Add(lb)        
        
        if Not Page.IsPostBack() then
            session("shp_id") = 2

           'sign without buffer button
            session("bufValue") = 0
            Button0.BackColor = System.Drawing.Color.Blue
            Button0.ForeColor = System.Drawing.Color.White
            GIS.FullExtent()
        else
            GIS.Zoom = Session("Zoom") 
        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 tpl As API.XGIS_Topology    
    
        ll = GIS.API.Items.Item(0)
        ll.Params.Area.OutlineColor = RGB(180, 180, 180)
        ll.Params.Area.Color = RGB(220, 220, 220)
        ll.Params.Labels.Font.Bold = True
        If ll Is Nothing Then
            Exit Sub
        End If
        
        lb = GIS.API.Get("buffer")
        If lb Is Nothing Then
            Exit Sub
        End If
    
        If Not session("shp_id") Is Nothing then
            shp_id = session("shp_id")
            shp = ll.GetShape(shp_id)
           'sign choosen shape
            shp = shp.MakeEditable()
            shp.Params.Area.Color = System.Convert.ToUInt32(RGB(180, 180, 180))
            shp.Params.Area.OutlineColor = System.Convert.ToUInt32(RGB(160, 160, 160))
            shp.Params.Area.OutlineWidth = -1               
        end if

        If shp Is Nothing Then
            Exit Sub
        End If        
        
        tpl = New API.XGIS_Topology
        
        tmp = tpl.MakeBuffer(shp, session("bufValue") * 1000, 9, False)
        If Not tmp Is Nothing Then
           lb.AddShape(tmp)
           tmp = Nothing
        End If

        GIS.Draw()
        tpl = Nothing        
    End Sub
    
    Sub GIS_Click(sender As Object, e As ImageClickEventArgs)
        Dim ptg As API.XGIS_Point
        Dim shp As API.XGIS_Shape
    
       'let's locate a shape after click
        ptg = GIS.API.ScreenToMap(GisUtils.Point(e.x, e.y))
        shp = GIS.API.Locate(ptg, 5 / GIS.Zoom)   '5 pixels precision
    
       'remember shapes uid
        If Not shp Is Nothing then
            session("shp_id") = shp.Uid
        end if
    End Sub
    
    
    Sub UnselectButtons()
        Button0.BackColor = System.Drawing.Color.LightGray
        Button0.ForeColor = System.Drawing.Color.Black
        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
    End Sub
    
    Sub Button0_Click(sender As Object, e As EventArgs)
        session("bufValue") = 0
        UnselectButtons()
        Button0.BackColor = System.Drawing.Color.Blue
        Button0.ForeColor = System.Drawing.Color.White
    End Sub
    
    
    Sub Button1_Click(sender As Object, e As EventArgs)
        session("bufValue") = -20
        UnselectButtons()
        Button1.BackColor = System.Drawing.Color.Blue
        Button1.ForeColor = System.Drawing.Color.White
    End Sub
    
    Sub Button2_Click(sender As Object, e As EventArgs)
        UnselectButtons()
        session("bufValue") = -10
        Button2.BackColor = System.Drawing.Color.Blue
        Button2.ForeColor = System.Drawing.Color.White
    End Sub
    
    
    Sub Button3_Click(sender As Object, e As EventArgs)
        session("bufValue") = -5
        UnselectButtons()
        Button3.BackColor = System.Drawing.Color.Blue
        Button3.ForeColor = System.Drawing.Color.White
    End Sub
    
    Sub Button4_Click(sender As Object, e As EventArgs)
        session("bufValue") = -2
        UnselectButtons()
        Button4.BackColor = System.Drawing.Color.Blue
        Button4.ForeColor = System.Drawing.Color.White
    End Sub
    
    Sub Button5_Click(sender As Object, e As EventArgs)
        session("bufValue") = 1
        UnselectButtons()
        Button5.BackColor = System.Drawing.Color.Blue
        Button5.ForeColor = System.Drawing.Color.White
    End Sub
    
    Sub Button6_Click(sender As Object, e As EventArgs)
        session("bufValue") = 2
        UnselectButtons()
        Button6.BackColor = System.Drawing.Color.Blue
        Button6.ForeColor = System.Drawing.Color.White
    End Sub
    
    Sub Button7_Click(sender As Object, e As EventArgs)
        session("bufValue") = 5
        UnselectButtons()
        Button7.BackColor = System.Drawing.Color.Blue
        Button7.ForeColor = System.Drawing.Color.White
    End Sub
    
    Sub Button8_Click(sender As Object, e As EventArgs)
        session("bufValue") = 10
        UnselectButtons()
        Button8.BackColor = System.Drawing.Color.Blue
        Button8.ForeColor = System.Drawing.Color.White
    End Sub
    
    Sub Button9_Click(sender As Object, e As EventArgs)
        session("bufValue") = 20
        UnselectButtons()
        Button9.BackColor = System.Drawing.Color.Blue
        Button9.ForeColor = System.Drawing.Color.White
    End Sub

</script>
<html>
<head>
    <title>TatukGIS IS Sample - Buffers 1</title>
    <link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <a name="top">
    <h1>Buffers 1
    </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>
                <tr>
                    <td colspan="2">
                        <p>
                        </p>
                    </td>
                </tr>
            </tbody>
        </table>
        <asp:Button id="Button0" onclick="Button0_Click" runat="server" Text="without buffer" Font-Bold="True" ForeColor="White" BackColor="Blue"></asp:Button>
        <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="-20"></asp:Button>
        <asp:Button id="Button2" onclick="Button2_Click" runat="server" Text="-10"></asp:Button>
        <asp:Button id="Button3" onclick="Button3_Click" runat="server" Text="-5"></asp:Button>
        <asp:Button id="Button4" onclick="Button4_Click" runat="server" Text="-2"></asp:Button>
        <asp:Button id="Button5" onclick="Button5_Click" runat="server" Text=" 1"></asp:Button>
        <asp:Button id="Button6" onclick="Button6_Click" runat="server" Text=" 2"></asp:Button>
        <asp:Button id="Button7" onclick="Button7_Click" runat="server" Text=" 5"></asp:Button>
        <asp:Button id="Button8" onclick="Button8_Click" runat="server" Text="10"></asp:Button>
        <asp:Button id="Button9" onclick="Button9_Click" runat="server" Text="20"></asp:Button>

    </form>
    </a>
</body>
</html>