Пример #1
0
    def simple_points_and_lines(self):
        self.set_step_name('Simple Points and Lines')
        self.set_text('You should see a four segment red line, and\n' +
                      'a blue cross hair 12 pixels tall.\n\n' +
                      'Try zooming in, the crosshair should *not* get bigger.')

        shapes = gview.GvShapes()
        gview.undo_register(shapes)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(20, 50, node=0)
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_LINE)
        shape.set_node(10, 10, node=0)
        shape.set_node(80, 10, node=1)
        shape.set_node(80, 90, node=2)
        shape.set_node(50, 80, node=3)
        shape.set_node(10, 90, node=4)
        shapes.append(shape)

        layer = gview.GvShapesLayer(shapes)
        layer.set_name('test_poly')
        layer.set_property('_line_color', '255 0 0 255')
        layer.set_property('_line_width', '3')
        layer.set_property('_point_color', '0 0 255 255')
        layer.set_property('_point_size', '12')
        self.view.add_layer(layer)
        self.view.set_active_layer(layer)

        self.view.fit_extents(0, 0, 100, 100)
Пример #2
0
    def __init__(self):
        GtkWindow.__init__(self)

        self.layer = None
        self.teardown_id = None
        self.changed_id = None
        self.resizing = FALSE
        self.resize_count = 0

        self.set_title('Legend: Empty')
        self.set_policy(TRUE, TRUE, FALSE)
        self.set_usize(300, 300)
        self.viewarea = gview.GvViewArea()
        back_color = gview.get_preference('legend-background-color')
        if back_color is None:
            back_color = (1.0, 1.0, 1.0, 1.0)
        else:
            back_color = color_string_to_tuple(back_color)

        self.viewarea.set_background_color(back_color)
        self.shapes = gview.GvShapes()
        self.vlayer = gview.GvShapesLayer(self.shapes)
        self.viewarea.add_layer(self.vlayer)
        self.add(self.viewarea)

        self.connect('delete-event', self.close)
        self.show_all()

        self.viewarea.fit_extents(0, self.viewarea.get_height(),
                                  self.viewarea.get_width(),
                                  -self.viewarea.get_height())

        self.changing_view_state = 0
        self.viewarea.connect('view-state-changed', self.view_state_cb)
Пример #3
0
    def transparent_poly(self):
        self.set_step_name('Polygon Transparency')
        self.set_text('You should see two overlaping polygons, with the\n' +
                      'rear one showing through the top one a little.')

        shapes = gview.GvShapes()
        gview.undo_register(shapes)

        poly = gview.GvShape(type=gview.GVSHAPE_AREA)
        poly.set_node(20, 5, node=0)
        poly.set_node(40, 5, node=1)
        poly.set_node(30, 50, node=2)
        shapes.append(poly)

        poly = gview.GvShape(type=gview.GVSHAPE_AREA)
        poly.set_node(10, 10, node=0)
        poly.set_node(80, 10, node=1)
        poly.set_node(80, 90, node=2)
        poly.set_node(50, 80, node=3)
        poly.set_node(10, 90, node=4)
        poly.set_node(10, 10, node=5)
        shapes.append(poly)

        layer = gview.GvShapesLayer(shapes)
        layer.set_name('test_poly')
        layer.set_property('_area_edge_color', '255 0 0 255')
        layer.set_property('_area_fill_color', '0 0 255 150')
        layer.set_property('_area_edge_width', '3')
        self.view.add_layer(layer)
        self.view.set_active_layer(layer)

        self.view.fit_extents(0, 0, 100, 100)
Пример #4
0
    def simple_poly(self):
        self.set_step_name('Simple Polygon Display')
        self.set_text('You should see a five sided polygon with a red edge\n' +
                      'and blue fill.  The edge should be 3 pixels wide.\n' +
                      'The polygon should have a triangular hole.')

        shapes = gview.GvShapes()
        gview.undo_register(shapes)

        poly = gview.GvShape(type=gview.GVSHAPE_AREA)
        poly.set_node(10, 10, node=0)
        poly.set_node(80, 10, node=1)
        poly.set_node(80, 90, node=2)
        poly.set_node(50, 80, node=3)
        poly.set_node(10, 90, node=4)
        poly.set_node(10, 10, node=5)
        poly.set_node(20, 20, node=0, ring=1)
        poly.set_node(40, 20, node=1, ring=1)
        poly.set_node(30, 50, node=2, ring=1)
        shapes.append(poly)

        layer = gview.GvShapesLayer(shapes)
        layer.set_name('test_poly')
        layer.set_property('_area_edge_color', '255 0 0 255')
        layer.set_property('_area_fill_color', '0 0 255 255')
        layer.set_property('_area_edge_width', '3')
        self.view.add_layer(layer)
        self.view.set_active_layer(layer)

        self.view.fit_extents(0, 0, 100, 100)
Пример #5
0
    def new_layer_unselected_cb(self, *args):
        """ Create new layer of only selected shapes """

        unselected = self.pgugrid.get_unselected_row_indices()

        if len(unselected) == 0:
            gvutils.warning('No rows unselected- ignoring!')
            return

        newshps = gview.GvShapes(name='Unselected')
        src = self.shapes
        if src is None:
            gvutils.warning('No source layer found- ignoring!')
            return

        schema = src.get_schema()
        for item in schema:
            newshps.add_field(item[0], item[1], item[2], item[3])

        for idx in unselected:
            if src[idx] is not None:
                newshps.append(src[idx].copy())

        gview.undo_register(newshps)
        clayer = gview.GvShapesLayer(newshps)

        cview = self.app.new_view()
        cview.viewarea.add_layer(clayer)
        cview.viewarea.set_active_layer(clayer)
Пример #6
0
    def set_shapes(self, widget=None, src=None):
        if src is None:
            src = self.entry.get_text()
        else:
            self.entry.set_text(src)

        shapes = gview.GvShapes(shapefilename=src)
        if shapes is not None and shapes._o is not None:
            self.grid.set_source(shapes)
Пример #7
0
    def ogrfs_points2(self):
        self.set_step_name('OGRFS Point Symbols')
        self.set_text( \
            'In the bottom right corner should be a yellow triangle\n'
            + 'pointing "north west".\n'
            + '\n'
            + 'In the middle should be a white cross hair.\n'
            + 'To the top/right is a red X.\n'
            + 'To the lower/left is a green X.\n'
            + '\n'
            + 'As you zoom in the red X should remain a constant distance\n'
            + 'in screen pixels from the white cross.  It is "offset" from\n'
            + 'the white cross a distance in screen pixels.\n'
            + '\n'
            + 'The green X is offset by a "georeferenced" distance, and\n'
            + 'should move closer as you zoom out, and further as you zoom\n'
            + 'in.\n'
            + '\n'
            + '\n'
            + '\n' )

        shapes = gview.GvShapes()
        gview.undo_register(shapes)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(15, 15, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FFFF00,a:45,s:3,id:ogr-sym-7)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 50, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFFFF,s:2,id:ogr-sym-0)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 50, node=0)
        shape.set_property(
            '_gv_ogrfs', 'SYMBOL(c:#FF0000,dx:20px,dy:10px,s:1,id:ogr-sym-1)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 50, node=0)
        shape.set_property(
            '_gv_ogrfs', 'SYMBOL(c:#00FF00,dx:-10g,dy:-5g,s:1,id:ogr-sym-1)')
        shapes.append(shape)

        layer = gview.GvShapesLayer(shapes)
        layer.set_name('test')
        self.view.add_layer(layer)
        self.view.set_active_layer(layer)

        self.view.fit_extents(0, 0, 100, 100)
Пример #8
0
def SimpleNorthLayer(xoffset,
                     yoffset,
                     ntype=GVNORTHSYM1,
                     color1=(0.0, 0.0, 0.0, 1.0),
                     color2=(1.0, 1.0, 1.0, 1.0),
                     scale=1.0,
                     shapes_name="North Arrow"):
    """ Create a layer with a North arrow symbol,
        with the North arrow located at (xoffset,yoffset).
        The 'ntype' parameter will eventually be used for
        different types of north arrows.  The layer
        will contain two shapes: an area or line, and
        label.
        Input:
            xoffset,yoffset- where to center North Arrow (in
                             display coordinates).

            ntype- index of north arrow type (currently only one type).
            color1- First color and outline color for north arrow. A tuple
                    of 4 values between 0 and 1.
            color2- Second color (not used yet).
            scale- amount to scale size of symbol by.
            shapes_name- name to give the shapes that form
                         the north arrow.
    """

    shps = gview.GvShapes(name=shapes_name)
    gview.undo_register(shps)

    nshp = gview.GvShape(type=gview.GVSHAPE_POINT)
    nshp.set_node(xoffset, yoffset)

    cstr1 = gvogrfs.gv_to_ogr_color(color1)
    if len(cstr1) < 9:
        cstr1 = cstr1 + "FF"

    refname, sm = CreateNorthSymbol(ntype, color1, color2, scale)
    dxstr = str(-1.5 * scale)
    dystr = str(-15.0 * scale)
    nshp.set_property('_gv_ogrfs',
                      'SYMBOL(c:'+cstr1+',s:4,id:"'+refname+'");'+\
                      'LABEL(c:'+cstr1+',t:"N",dx:'+dxstr+\
                      ',dy:'+dystr+')' )
    shps.append(nshp)

    layer = gview.GvShapesLayer(shps)
    # Set antialias property so that lines look nice
    # when rotated.
    layer.set_property('_gl_antialias', '1')

    return layer
Пример #9
0
    def new_layer(self, *args):
        if not self.selected_view:
            return
        view = self.views[self.selected_view]
        layer_list = view.list_layers()
        layer_map = {}
        for layer in layer_list:
            layer_map[layer.get_name()] = layer

        counter = 1
        name = 'UserShapes_' + str(counter)
        while layer_map.has_key(name):
            counter = counter + 1
            name = 'UserShapes_' + str(counter)

        shapes = gview.GvShapes(name=name)
        gview.undo_register(shapes)
        layer = gview.GvShapesLayer(shapes)
        view.add_layer(layer)
        view.set_active_layer(layer)
Пример #10
0
    def ogrfs_lines(self):
        self.set_step_name('OGRFS Lines')
        self.set_text(
            'You should see a thick (8 pixels wide) green line\n' +
            'with a thin (2 pixel wide) red line down the center.\n' + '\n' +
            'You should also see a second line in blue rendered \n' +
            'in a dash-dot pattern\n' + '')

        shapes = gview.GvShapes()
        gview.undo_register(shapes)

        shape = gview.GvShape(type=gview.GVSHAPE_LINE)
        shape.set_node(10, 10, node=0)
        shape.set_node(80, 10, node=1)
        shape.set_node(80, 90, node=2)
        shape.set_node(50, 80, node=3)
        shape.set_node(10, 90, node=4)
        shape.set_property('_gv_ogrfs',
                           'PEN(c:#00FF00,w:8);PEN(c:#FF0000,w:2)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_LINE)
        shape.set_node(20, 20, node=0)
        shape.set_node(40, 20, node=1)
        shape.set_node(40, 40, node=2)
        shape.set_node(60, 60, node=3)
        shape.set_node(40, 80, node=4)
        shape.set_property('_gv_ogrfs', 'PEN(c:#0000FF,w:2,p:ogr-pen-6)')
        shapes.append(shape)

        layer = gview.GvShapesLayer(shapes)
        layer.set_name('test')
        self.view.add_layer(layer)
        self.view.set_active_layer(layer)

        self.view.fit_extents(0, 0, 100, 100)
Пример #11
0
def SimpleLatLongGrid(min_x,
                      min_y,
                      max_x,
                      max_y,
                      hdeg,
                      hmin,
                      hsec,
                      vdeg,
                      vmin,
                      vsec,
                      color=(0.5, 1.0, 0.5, 1.0),
                      xoff=-0.18,
                      yoff=1.04,
                      label_type=None,
                      shapes_name="Grid"):
    """ Create a reference graticule.
        min_x, min_y- minimum lat/longs, in decimal degrees
        max_x, max_y- minimum lat/longs, in decimal degrees
        hdeg/hmin/hsec- horizontal spacing (degrees/min/sec)
        vdeg/vmin/vsec- vertical spacing (degrees/min/sec)

        decimal degrees=degrees+(minutes/60.0)+(seconds/3600.0)

        xoff- horizontal offset of vertical labels, as a fraction
              of max_x-min_x.  Offset is relative to min_x.
        yoff- vertical offset of horizontal labels, as a fraction
              of max_y-min_y.  Offset is relative to min_y.
              
        color- start color for the grid
        label_type- not used yet; might be later for formatting.

        extents may be shifted slightly to generate 'nice' labels.

        Note that the min_x, min_y, max_x, max_y extents include
        a border 5% in from each side, and room for labels.        
    """

    shps = gview.GvShapes(name=shapes_name)
    gview.undo_register(shps)
    shps.add_field('position', 'string', 20)

    if os.name == 'nt':
        font = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"
    else:
        #font="-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"
        #font="-urw-helvetica-medium-r-normal-*-9-*-*-*-p-*-iso8859-2"
        font = "-adobe-helvetica-medium-r-normal-*-8-*-*-*-p-*-iso10646-1"
        #font="-misc-fixed-medium-r-*-*-9-*-*-*-*-*-*-*"

    x_spacing = float(hdeg) + (float(hmin) + (float(hsec) / 60.0)) / 60.0
    y_spacing = float(vdeg) + (float(vmin) + (float(vsec) / 60.0)) / 60.0

    # Round to nearest integer space
    max_x = min_x + Numeric.floor((max_x - min_x) / x_spacing) * x_spacing
    max_y = min_y + Numeric.floor((max_y - min_y) / y_spacing) * y_spacing

    lxoff = (max_x - min_x) * xoff  # horizontal label placement
    lyoff = (max_y - min_y) * yoff  # vertical label placement

    for hval in Numeric.arange(min_x, max_x + x_spacing / 100.0, x_spacing):
        nshp = gview.GvShape(type=gview.GVSHAPE_LINE)
        nshp.set_node(hval, max_y, 0, 0)
        nshp.set_node(hval, min_y, 0, 1)
        shps.append(nshp)
        pshp = gview.GvShape(type=gview.GVSHAPE_POINT)
        pshp.set_node(hval, min_y + lyoff)
        hstr = GetLatLongString(hval, 'longitude')
        pshp.set_property('position', hstr)
        shps.append(pshp)

    for vval in Numeric.arange(min_y, max_y + y_spacing / 100.0, y_spacing):
        nshp = gview.GvShape(type=gview.GVSHAPE_LINE)
        nshp.set_node(min_x, vval, 0, 0)
        nshp.set_node(max_x, vval, 0, 1)
        shps.append(nshp)
        pshp = gview.GvShape(type=gview.GVSHAPE_POINT)
        pshp.set_node(min_x + lxoff, vval)
        vstr = GetLatLongString(vval, 'latitude')
        pshp.set_property('position', vstr)
        shps.append(pshp)

    cstr = gvogrfs.gv_to_ogr_color(color)
    if len(cstr) < 9:
        cstr = cstr + "FF"
    clstr = str(color[0]) + ' ' + str(color[1]) + ' ' + str(
        color[2]) + ' ' + str(color[3])

    layer = gview.GvShapesLayer(shps)
    layer.set_property('_line_color', clstr)
    layer.set_property('_point_color', clstr)
    # Set antialias property so that lines look nice
    # when rotated.
    layer.set_property('_gl_antialias', '1')
    layer.set_property('_gv_ogrfs_point',
                       'LABEL(t:{position},f:"' + font + '",c:' + cstr + ')')
    layer.set_read_only(gtk.TRUE)

    return layer
Пример #12
0
def SimpleMeasuredGrid(min_x,
                       min_y,
                       max_x,
                       max_y,
                       x_spacing,
                       y_spacing,
                       color=(0.5, 1.0, 0.5, 1.0),
                       xoff=-0.14,
                       yoff=1.04,
                       label_type=None,
                       shapes_name="Grid"):
    """ Create a reference grid for a utm-projected raster.
        min_x, min_y, max_x, max_y- extents that grid should cover
        x_spacing- line spacing in horizontal direction
        y_spacing- line spacing in vertical direction
        xoff- horizontal offset of vertical labels, as a fraction
              of max_x-min_x.  Offset is relative to min_x.
        yoff- vertical offset of horizontal labels, as a fraction
              of max_y-min_y.  Offset is relative to min_y.
        color- start color for the grid
        label_type- not used yet; might be later for formatting.
        shapes_name- name to give the shapes forming the layer.
        
    """

    shps = gview.GvShapes(name=shapes_name)
    gview.undo_register(shps)
    shps.add_field('position', 'string', 20)

    if os.name == 'nt':
        font = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"
    else:
        #font="-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"
        #font="-urw-helvetica-medium-r-normal-*-9-*-*-*-p-*-iso8859-2"
        font = "-adobe-helvetica-medium-r-normal-*-8-*-*-*-p-*-iso10646-1"
        #font="-misc-fixed-medium-r-*-*-9-*-*-*-*-*-*-*"

    # Round to nearest integer space
    max_x = min_x + Numeric.floor((max_x - min_x) / x_spacing) * x_spacing
    max_y = min_y + Numeric.floor((max_y - min_y) / y_spacing) * y_spacing

    lxoff = (max_x - min_x) * xoff  # horizontal label placement
    lyoff = (max_y - min_y) * yoff  # vertical label placement

    for hval in Numeric.arange(min_x, max_x + x_spacing / 100.0, x_spacing):
        nshp = gview.GvShape(type=gview.GVSHAPE_LINE)
        nshp.set_node(hval, max_y, 0, 0)
        nshp.set_node(hval, min_y, 0, 1)
        shps.append(nshp)
        pshp = gview.GvShape(type=gview.GVSHAPE_POINT)
        pshp.set_node(hval, min_y + lyoff)
        pshp.set_property('position', "%d" % int(hval + 0.5))
        shps.append(pshp)

    for vval in Numeric.arange(min_y, max_y + y_spacing / 100.0, y_spacing):
        nshp = gview.GvShape(type=gview.GVSHAPE_LINE)
        nshp.set_node(min_x, vval, 0, 0)
        nshp.set_node(max_x, vval, 0, 1)
        shps.append(nshp)
        pshp = gview.GvShape(type=gview.GVSHAPE_POINT)
        pshp.set_node(min_x + lxoff, vval)
        pshp.set_property('position', "%d" % int(vval + 0.5))
        shps.append(pshp)

    cstr = gvogrfs.gv_to_ogr_color(color)
    if len(cstr) < 9:
        cstr = cstr + "FF"
    clstr = str(color[0]) + ' ' + str(color[1]) + ' ' + str(
        color[2]) + ' ' + str(color[3])

    layer = gview.GvShapesLayer(shps)
    layer.set_property('_line_color', clstr)
    layer.set_property('_point_color', clstr)
    # Set antialias property so that lines look nice
    # when rotated.
    layer.set_property('_gl_antialias', '1')
    layer.set_property('_gv_ogrfs_point',
                       'LABEL(t:{position},f:"' + font + '",c:' + cstr + ')')
    layer.set_read_only(gtk.TRUE)

    return layer
Пример #13
0
    def raster_symbol(self):
        self.set_step_name('Raster Symbol Test')
        self.set_text('A red symbol (the busy indicator from thet toolbar)\n' +
                      'should be shown.  When zooming in or out it should\n' +
                      'remain the same size on screen.\n' + '' +
                      'NOTE: This symbols should really be green but it\n' +
                      'seems that currently the color attribute of\n' +
                      'SYMBOL directives for raster symbols is ignored\n' +
                      '\n' + '\n' + '')

        shapes = gview.GvShapes()
        gview.undo_register(shapes)
        layer = gview.GvShapesLayer(shapes)
        layer.set_name('test')

        if os.name == "nt":
            sym_file = gview.home_dir + '\\pics\\busy.xpm'
            sym_file2 = gview.home_dir + '\\pics\\idle.xpm'
            sym_name = '\\three_idle'
        else:
            sym_file = gview.home_dir + '/pics/busy.xpm'
            sym_file2 = gview.home_dir + '/pics/idle.xpm'
            sym_name = '/three_idle'

        # Unoffset icon
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(20, 50, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#00FF00,id:"' + sym_file + '")')
        shapes.append(shape)

        # Pixel Offset
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(20, 50, node=0)
        shape.set_property(
            '_gv_ogrfs',
            'SYMBOL(c:#00FF00,dx:30px,dy:-10px,id:"' + sym_file + '")')
        shapes.append(shape)

        # Geo Offset
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(20, 50, node=0)
        shape.set_property(
            '_gv_ogrfs',
            'SYMBOL(c:#00FF00,dx:30g,dy:-30g,id:"' + sym_file + '")')
        shapes.append(shape)

        # Inject a vector icon symbol that consists of three raster symbols,
        # but do it on the vector layer.

        sm = layer.get_symbol_manager(1)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(0.0, 0, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(dy:-10px,dx:-40px,id:"' + sym_file2 + '");' + \
                           'SYMBOL(id:"' + sym_file2 + '");' + \
                           'SYMBOL(dy:10px,dx:40px,id:"' + sym_file2 + '")' )

        sm.inject_vector_symbol(sym_name, shape)

        # Place the "3" idle symbol.

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(60, 50, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#00FF00,id:"' + sym_name + '")')
        shapes.append(shape)

        # Add line for context.
        shape = gview.GvShape(type=gview.GVSHAPE_LINE)
        shape.set_node(10, 10, node=0)
        shape.set_node(80, 10, node=1)
        shape.set_node(80, 90, node=2)
        shape.set_node(50, 80, node=3)
        shape.set_node(10, 90, node=4)
        shapes.append(shape)

        self.view.add_layer(layer)
        self.view.set_active_layer(layer)

        self.view.fit_extents(0, 0, 100, 100)
Пример #14
0
    def ogrfs_points(self):
        self.set_step_name('OGRFS Point Symbols')
        self.set_text(
            'You should see two rows of yellow symbols.\n' +
            'First Row: plus, circle, box, triangle, start\n' +
            'Second Row: X, filled circle, box, triangle and star\n' + '\n' +
            'Symbols should stay the same size when you zoom.\n' + '\n' +
            '\n' + '\n' + '')

        shapes = gview.GvShapes()
        gview.undo_register(shapes)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(15, 30, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFF00,s:3,id:ogr-sym-1)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(15, 15, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFF00,s:3,id:ogr-sym-0)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(30, 15, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFF00,s:3,id:ogr-sym-2)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(30, 30, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFF00,s:3,id:ogr-sym-3)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(45, 15, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFF00,s:3,id:ogr-sym-4)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(45, 30, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFF00,s:3,id:ogr-sym-5)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(60, 15, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFF00,s:3,id:ogr-sym-6)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(60, 30, 35, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFF00,s:3,id:ogr-sym-7)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(75, 15, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFF00,s:3,id:ogr-sym-8)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(75, 30, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFF00,s:3,id:ogr-sym-9)')
        shapes.append(shape)

        layer = gview.GvShapesLayer(shapes)
        layer.set_name('test')
        self.view.add_layer(layer)
        self.view.set_active_layer(layer)

        self.view.fit_extents(0, 0, 100, 100)
Пример #15
0
    def execute(self, args, line, interp):

        import gvutils
        import gview
        import gdalnumeric

        clayer = gview.app.sel_manager.get_active_layer()
        if clayer is None:
            interp.showText('No layer is currently active!', 'error')
            return 0

        try:
            roi = gview.app.toolbar.get_roi()
        except:
            roi = None

        # /s argument is 1 if user requested screenshot, 0
        # if the underlying data was requested (default).
        # NOTE: roi is ignored for screenshot option
        is_ss = args[1]
        shell_vars = {}

        if is_ss == 1:
            cview = gview.app.sel_manager.get_active_view()
            if roi is not None:
                txt='Warning- ROI is ignored for screenshot-style get.\n'+\
                     'Grabbing whole view area.\n'
                interp.showText(txt, 'error')

            # Note: for now, assume colour mode to start with (since
            # even single band images may have luts applied), and
            # if all three bands are identical in the end (greyscale
            # equivalent), return 1.

            err = cview.print_to_file(cview.get_width(), cview.get_height(),
                                      '_temp.tif', 'GTiff', 1)

            import os

            if err != 0:
                interp.showText(
                    'Error grabbing screenshot- unable to generate temporary file.\n',
                    'error')
                os.unlink('_temp.tif')
                return 0

            try:
                import Numeric
                new_arr = gdalnumeric.LoadFile('_temp.tif')
                if ((max(
                        Numeric.ravel(
                            Numeric.fabs(new_arr[0, :, :] - new_arr[1, :, :])))
                     == 0) and (max(
                         Numeric.ravel(
                             Numeric.fabs(new_arr[2, :, :] -
                                          new_arr[1, :, :]))) == 0)):
                    shp = Numeric.shape(new_arr)
                    new_arr = Numeric.reshape(new_arr[0, :, :],
                                              (shp[1], shp[2]))
            except:
                interp.showText(
                    'Error grabbing screenshot- unable to load temporary file.\n',
                    'error')
                os.unlink('_temp.tif')
                return 0

            shell_vars[args[0]] = new_arr
            os.unlink('_temp.tif')

            return (1, shell_vars)

        if gvutils.is_of_class(clayer.__class__, 'GvRasterLayer'):
            ds = clayer.get_parent().get_dataset()

            if roi is None:
                shell_vars[args[0]] = gdalnumeric.DatasetReadAsArray(ds)
                return (1, shell_vars)
            else:
                # Here, need to check if georeferencing is on or not and
                # convert to pixel/line coordinates if it is on.
                cview = gview.app.sel_manager.get_active_view()
                if (cview.get_raw(clayer) == 0):
                    # view is georeferenced- convert corners
                    [pixel, line] = clayer.view_to_pixel(roi[0], roi[1])
                    [pixel2,
                     line2] = clayer.view_to_pixel(roi[0] + roi[2],
                                                   roi[1] + roi[3])
                    [pixel3,
                     line3] = clayer.view_to_pixel(roi[0], roi[1] + roi[3])
                    [pixel4,
                     line4] = clayer.view_to_pixel(roi[0] + roi[2], roi[1])

                    # Get pixel-space rectangle (offsets of 1 ensure that
                    # only pixels fully enclosed by the roi are included-
                    # int casting will round floating point pixel/line
                    # values down)
                    max_pix = int(max(pixel, pixel2, pixel3, pixel4))
                    min_pix = int(min(pixel, pixel2, pixel3, pixel4)) + 1
                    max_line = int(max(line, line2, line3, line4))
                    min_line = int(min(line, line2, line3, line4)) + 1

                    # in pixel/line space, selected region is a parallelogram
                    # but not necessarily a rectangle.  Choose a rectangle
                    # that fully encloses the parallelogram
                    roi = (min_pix, min_line, max_pix - min_pix,
                           max_line - min_line)

                shell_vars = {}
                shell_vars[args[0]] = gdalnumeric.DatasetReadAsArray(
                    ds, roi[0], roi[1], roi[2], roi[3])
                return (1, shell_vars)
        elif gvutils.is_of_class(clayer.__class__, 'GvShapesLayer'):
            shps = clayer.get_parent()
            selected = clayer.get_selected()

            if len(selected) == 0:
                newshps = gview.GvShapes()
                for item in shps.get_schema():
                    newshps.add_field(item[0], item[1], item[2], item[3])
                for shp in shps:
                    if shp is not None:
                        newshps.append(shp.copy())

                shell_vars = {}
                shell_vars[args[0]] = newshps
                return (1, shell_vars)
            else:
                newshps = gview.GvShapes()
                for item in shps.get_schema():
                    newshps.add_field(item[0], item[1], item[2], item[3])
                for idx in selected:
                    newshps.append(shps[idx].copy())
                shell_vars = {}
                shell_vars[args[0]] = newshps
                return (1, shell_vars)
        else:
            interp.showText(
                'Active layer is not a raster or recognized vector layer!',
                'error')
            return 0
Пример #16
0
    def size_symbols( self ):
        self.set_step_name( 'Military Size Symbols' )
        self.set_text( \
            'Here you will see each of the size designators for various sizes\n'
            + 'of military symbols\n' )

        shapes = gview.GvShapes()
        gview.undo_register( shapes)

        sm = gview.GvSymbolManager()
        
        #symbol_size * base_size * 2 define the size of the symbol on screen.
        base_size = 1.0
        symbol_size = 3.0 
        
        #the number of pixels wide to make the task force indicator
        tf_offset = ( symbol_size * base_size * 2 ) + 2 
        symbol_offset = tf_offset
                           
        #create the circle symbol as a multiline with n points
        import math
        circle = gview.GvShape( type=gview.GVSHAPE_LINE )
        filled_circle = gview.GvShape( type=gview.GVSHAPE_AREA )
        n = 8
        radius = base_size
        for i in range( n + 1 ):
            angle = (float(i)*(360.0/float(n))) / (180.0/math.pi)
            x = math.sin( angle ) * radius
            y = math.cos( angle ) * radius
            circle.add_node( x, y, 0.0 )
            filled_circle.add_node( x, y, 0.0 )
        circle.set_property( "_gv_ogrfs", "PEN(w:1)" )
        filled_circle.set_property( "_gv_ogrfs", "PEN(w:1);BRUSH()" )
        sm.inject_vector_symbol( "%scircle" % os.sep, circle )
        sm.inject_vector_symbol( "%sfilled_circle" % os.sep, filled_circle)
        
        #create a vertical bar symbol
        shape = gview.GvShape(type=gview.GVSHAPE_LINE )
        shape.add_node( 0.0, -base_size, 0.0 )
        shape.add_node( 0.0, base_size, 0.0 )
        shape.set_property( "_gv_ogrfs", "PEN(w:1)" )
        sm.inject_vector_symbol( "%svertical_bar" % os.sep, shape )

        #now create a cross from rotated vertical bars
        shape = gview.GvShape(type=gview.GVSHAPE_LINE )
        shape.add_node( -base_size, -base_size, 0.0 )
        shape.add_node( base_size, base_size, 0.0 )
        shape.set_property( "_gv_ogrfs", "PEN(w:1)" )
        sm.inject_vector_symbol( "%sline_45" % os.sep, shape )

        shape = gview.GvShape(type=gview.GVSHAPE_LINE )
        shape.add_node( -base_size, base_size, 0.0 )
        shape.add_node( base_size, -base_size, 0.0 )
        shape.set_property( "_gv_ogrfs", "PEN(w:1)" )
        sm.inject_vector_symbol( "%sline_315" % os.sep, shape )
        
        shape = gview.GvShape(type=gview.GVSHAPE_POINT )
        shape.add_node( 0.0, 0.0, 0.0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(id:%sline_45);SYMBOL(id:%sline_315)" % ( os.sep, os.sep ) )
        sm.inject_vector_symbol( "%scross" % os.sep, shape )

        #taskforce 1
        shape = self.create_taskforce_indicator( 1, symbol_size * base_size, tf_offset )
        sm.inject_vector_symbol( "%stf_1" % os.sep, shape )
        
        #taskforce 2
        shape = self.create_taskforce_indicator( 2, symbol_size * base_size, tf_offset )
        sm.inject_vector_symbol( "%stf_2" % os.sep, shape )

        #taskforce 3
        shape = self.create_taskforce_indicator( 3, symbol_size * base_size, tf_offset )
        sm.inject_vector_symbol( "%stf_3" % os.sep, shape )

        #taskforce 4
        shape = self.create_taskforce_indicator( 4, symbol_size * base_size, tf_offset )
        sm.inject_vector_symbol( "%stf_4" % os.sep, shape )

        #taskforce 5
        shape = self.create_taskforce_indicator( 5, symbol_size * base_size, tf_offset )
        sm.inject_vector_symbol( "%stf_5" % os.sep, shape )
        
        #taskforce 6
        shape = self.create_taskforce_indicator( 6, symbol_size * base_size, tf_offset )
        sm.inject_vector_symbol( "%stf_6" % os.sep, shape )
        

        #team symbol
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 0.0, 0.0, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(id:%scircle,s:%s);SYMBOL(id:%sline_45,s:%s)" % (os.sep, symbol_size, os.sep, symbol_size) )
        sm.inject_vector_symbol( "%steam" % os.sep, shape )
        
        #squad symbol
        shape = self.create_size_indicator( "filled_circle", 1, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%ssquad" % os.sep, shape )

        #section symbol
        shape = self.create_size_indicator( "filled_circle", 2, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%ssection" % os.sep, shape )

        #platoon symbol
        shape = self.create_size_indicator( "filled_circle", 3, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%splatoon" % os.sep, shape )

        #company symbol
        shape = self.create_size_indicator( "vertical_bar", 1, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%scompany" % os.sep, shape )
        
        #battalion symbol
        shape = self.create_size_indicator( "vertical_bar", 2, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%sbattalion" % os.sep, shape )
        
        #regiment symbol
        shape = self.create_size_indicator( "vertical_bar", 3, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%sregiment" % os.sep, shape )
        
        #brigade symbol
        shape = self.create_size_indicator( "cross", 1, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%sbrigade" % os.sep, shape )

        #division symbol
        shape = self.create_size_indicator( "cross", 2, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%sdivision" % os.sep, shape )
        
        print 'Division:' + shape.get_property('_gv_ogrfs')
        
        #corps symbol
        shape = self.create_size_indicator( "cross", 3, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%scorps" % os.sep, shape )
        
        #army symbol
        shape = self.create_size_indicator( "cross", 4, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%sarmy" % os.sep, shape )
        
        #armygroup symbol
        shape = self.create_size_indicator( "cross", 5, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%sarmygroup" % os.sep, shape )
        
        #region symbol
        shape = self.create_size_indicator( "cross", 6, symbol_size, symbol_offset )
        sm.inject_vector_symbol( "%sregion" % os.sep, shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 10, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"team\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 10, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%steam)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 10, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%steam);SYMBOL(c:#00FFFF,id:%stf_1" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 15, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"squad\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 15, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%ssquad)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 15, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%ssquad);SYMBOL(c:#00FFFF,id:%stf_1" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 20, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"section\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 20, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%ssection)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 20, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%ssection);SYMBOL(c:#00FFFF,id:%stf_2" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 25, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"platoon\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 25, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%splatoon)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 25, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%splatoon);SYMBOL(c:#00FFFF,id:%stf_3" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 30, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"company\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 30, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%scompany)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 30, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%scompany);SYMBOL(c:#00FFFF,id:%stf_1" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 35, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"battalion\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 35, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sbattalion)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 35, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sbattalion);SYMBOL(c:#00FFFF,id:%stf_2" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 40, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"regiment\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 40, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sregiment)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 40, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sregiment);SYMBOL(c:#00FFFF,id:%stf_3" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 45, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"brigade\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 45, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sbrigade)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 45, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sbrigade);SYMBOL(c:#00FFFF,id:%stf_1" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 50, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"division\")") 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 50, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sdivision)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 50, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sdivision);SYMBOL(c:#00FFFF,id:%stf_2" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 55, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"corps\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 55, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%scorps)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 55, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%scorps);SYMBOL(c:#00FFFF,id:%stf_3" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 60, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"army\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 60, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sarmy)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 60, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sarmy);SYMBOL(c:#00FFFF,id:%stf_4" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 65, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"armygroup\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 65, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sarmygroup)" % os.sep ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 65, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sarmygroup);SYMBOL(c:#00FFFF,id:%stf_5" % (os.sep,os.sep) ) 
        shapes.append( shape )

        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 10, 70, node=0 )
        shape.set_property( "_gv_ogrfs", "LABEL(c:#00FFFF,t:\"region\")" ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 30, 70, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sregion)" % os.sep ) 
        shapes.append( shape )
        
        shape = gview.GvShape( type = gview.GVSHAPE_POINT )
        shape.set_node( 50, 70, node=0 )
        shape.set_property( "_gv_ogrfs", "SYMBOL(c:#00FFFF,id:%sregion);SYMBOL(c:#00FFFF,id:%stf_6" % (os.sep,os.sep) ) 
        shapes.append( shape )

        # Create the layer and display

        #turn off display lists for now.
        #gview.set_preference('display_lists', "OFF" )
        
        layer = gview.GvShapesLayer( shapes )
        layer.set_name( 'test' )
        layer.set_property( "_gl_antialias", "1" )
        self.view.add_layer( layer )
        self.view.set_active_layer( layer )

        self.view.fit_extents( 0, 0, 100, 100 )
Пример #17
0
def SimpleScalebarLayer(xoffset,
                        yoffset,
                        dwidth,
                        swidth,
                        angle,
                        units_label=None,
                        stype=GVSCALE1,
                        color1=(0.0, 0.0, 0.0, 1.0),
                        color2=(1.0, 1.0, 1.0, 1.0),
                        offset=-0.2,
                        shapes_name="Scale Bar"):
    """ Create a layer with a Scale bar located at
        stretching from dmin to dmax on the display
        Input:
            xoffset,yoffset- where to center scale bar (in
                             display coordinates)

            dwidth- width of scale bar in display coordinates
            swidth- width of scale bar in scale coordinates
                    (same if scale units and geocoding units
                    are the same; different if for example
                    display is UTM- meters- and scale bar is
                    in km)
            angle- angle of scale bar relative to display
                   (in RADIANS)
            units_label- label for units (left out if None)
            stype- index of scale bar type (currently must be 0)
            color1- First color and outline color for scale bar. A tuple
                    of 4 values between 0 and 1.
            color2- Second color (only used in alternating scale bars)
            offset- Vertical offset of labels for scale bar as a
                    fraction of scale bar width.
            shapes_name- name to give the shapes that form
                         the scalebar.
    """

    shps = gview.GvShapes(name=shapes_name)
    gview.undo_register(shps)
    shps.add_field('label', 'string', 20)

    if os.name == 'nt':
        font = "-adobe-helvetica-medium-r-*-*-15-*-*-*-*-*-*-*"
    else:
        #font="-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"
        #font="-urw-helvetica-medium-r-normal-*-9-*-*-*-p-*-iso8859-2"
        font = "-adobe-helvetica-medium-r-normal-*-8-*-*-*-p-*-iso10646-1"
        #font="-misc-fixed-medium-r-*-*-9-*-*-*-*-*-*-*"

    sc = dwidth / swidth
    svals, labels = GetScaleBlocks(swidth)

    cstr1=str(color1[0])+' '+str(color1[1])+' '+str(color1[2])+\
           ' '+str(color1[3])
    cstr2=str(color2[0])+' '+str(color2[1])+' '+str(color2[2])+\
           ' '+str(color2[3])

    if stype == GVSCALE1:
        # Rectangle with alternating filled/unfilled
        # sections.
        smax = svals[len(svals) - 1]

        # rectangle nodes before rotation
        hbr = (svals -
               (smax / 2.0)) * sc  # horizontal- shift to -smax/2:+smax/2
        # so that rectangle is centered about 0.
        # rectangle extends from -smax/20 (bbr) to +smax/20 (tbr) vertically,
        # labels are placed at + or - smax/5
        tbr = smax / 20.0 * Numeric.ones(Numeric.shape(hbr))
        bbr = -1 * smax / 20.0 * Numeric.ones(Numeric.shape(hbr))
        lbr = offset * smax * Numeric.ones(Numeric.shape(hbr))

        # units label location before rotation
        uxbr = (hbr[len(hbr) - 1] - hbr[0]) * 0.05 + hbr[len(hbr) - 1]

        # rotate
        ctheta = Numeric.cos(angle)
        stheta = Numeric.sin(angle)
        tx = hbr * ctheta - tbr * stheta + xoffset
        ty = hbr * stheta + tbr * ctheta + yoffset
        bx = hbr * ctheta - bbr * stheta + xoffset
        by = hbr * stheta + bbr * ctheta + yoffset
        lx = hbr * ctheta - lbr * stheta + xoffset
        ly = hbr * stheta + lbr * ctheta + yoffset
        ux = uxbr * ctheta + xoffset
        uy = uxbr * stheta + yoffset

        # LATER: once shape collections are working, use them instead
        # so that entire scale bar can be selected and shifted as
        # a whole rather than separate shapes...

        #shp=gview.GvShape(type=gview.GVSHAPE_COLLECTION)
        #shp.set_property('_gv_ogrfs_point',
        #               'LABEL(t:{label},f:"%s",c:#000000FF)' % font)
        #shps.append(shp)
        for idx in range(len(tx) - 1):
            nshp = gview.GvShape(type=gview.GVSHAPE_AREA)
            nshp.add_node(tx[idx], ty[idx], 0)
            nshp.add_node(tx[idx + 1], ty[idx + 1], 0)
            nshp.add_node(bx[idx + 1], by[idx + 1], 0)
            nshp.add_node(bx[idx], by[idx], 0)
            nshp.add_node(tx[idx], ty[idx], 0)
            if idx % 2:
                nshp.set_property('_gv_color', cstr1)
                nshp.set_property('_gv_fill_color', cstr2)
            else:
                nshp.set_property('_gv_color', cstr1)
                nshp.set_property('_gv_fill_color', cstr1)

            shps.append(nshp)

        for idx in range(len(lx)):
            if labels[idx] is not None:
                lshp = gview.GvShape(type=gview.GVSHAPE_POINT)
                lshp.set_node(lx[idx], ly[idx])
                lshp.set_property('label', labels[idx])
                shps.append(lshp)

        if units_label is not None:
            lshp = gview.GvShape(type=gview.GVSHAPE_POINT)
            lshp.set_node(ux, uy)
            lshp.set_property('label', units_label)
            shps.append(lshp)

    layer = gview.GvShapesLayer(shps)
    # Set antialias property so that lines look nice
    # when rotated.
    layer.set_property('_gl_antialias', '1')
    cstr3 = gvogrfs.gv_to_ogr_color(color1)
    if len(cstr3) < 9:
        cstr3 = cstr3 + "FF"

    layer.set_property('_gv_ogrfs_point',
                       'LABEL(t:{label},f:"%s",c:%s)' % (font, cstr3))
    return layer
Пример #18
0
def SimpleReferenceGrid(min_x,
                        min_y,
                        max_x,
                        max_y,
                        x_divisions,
                        y_divisions,
                        color=(0.5, 1.0, 0.5, 1.0),
                        xoff=-0.15,
                        yoff=-0.04,
                        label_type=None,
                        shapes_name="Grid"):
    """ Create a reference grid for an unprojected raster.
        min_x, min_y- minimum lat/longs, in decimal degrees
        max_x, max_y- minimum lat/longs, in decimal degrees
        x_divisions- number of divisions in horizontal direction
        y_divisions- number of divisions in vertical direction
        xoff- horizontal offset of vertical labels, as a fraction
              of max_x-min_x.  Offset is relative to min_x.
        yoff- vertical offset of horizontal labels, as a fraction
              of max_y-min_y.  Offset is relative to min_y.
        color- start color for the grid
        label_type- not used yet; might be later for formatting.

    """

    shps = gview.GvShapes(name=shapes_name)
    gview.undo_register(shps)
    shps.add_field('position', 'string', 20)

    if os.name == 'nt':
        font = "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"
    else:
        #font="-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"
        #font="-urw-helvetica-medium-r-normal-*-9-*-*-*-p-*-iso8859-2"
        font = "-adobe-helvetica-medium-r-normal-*-8-*-*-*-p-*-iso10646-1"
        #font="-misc-fixed-medium-r-*-*-9-*-*-*-*-*-*-*"

    lxoff = (max_x - min_x) * xoff  # horizontal label placement
    lyoff = (max_y - min_y) * yoff  # vertical label placement

    hspc = (max_x - min_x) / x_divisions
    vspc = (max_y - min_y) / y_divisions

    for hval in Numeric.arange(min_x, max_x + hspc / 100.0, hspc):
        nshp = gview.GvShape(type=gview.GVSHAPE_LINE)
        nshp.set_node(hval, max_y, 0, 0)
        nshp.set_node(hval, min_y, 0, 1)
        shps.append(nshp)
        pshp = gview.GvShape(type=gview.GVSHAPE_POINT)
        pshp.set_node(hval, min_y + lyoff)
        pshp.set_property('position', "%.1f" % hval)
        shps.append(pshp)

    for vval in Numeric.arange(min_y, max_y + vspc / 100.0, vspc):
        nshp = gview.GvShape(type=gview.GVSHAPE_LINE)
        nshp.set_node(min_x, vval, 0, 0)
        nshp.set_node(max_x, vval, 0, 1)
        shps.append(nshp)
        pshp = gview.GvShape(type=gview.GVSHAPE_POINT)
        pshp.set_node(min_x + lxoff, vval)
        pshp.set_property('position', "%.1f" % vval)
        shps.append(pshp)

    cstr = gvogrfs.gv_to_ogr_color(color)
    if len(cstr) < 9:
        cstr = cstr + "FF"
    clstr = str(color[0]) + ' ' + str(color[1]) + ' ' + str(
        color[2]) + ' ' + str(color[3])

    layer = gview.GvShapesLayer(shps)
    layer.set_property('_line_color', clstr)
    layer.set_property('_point_color', clstr)
    # Set antialias property so that lines look nice
    # when rotated.
    layer.set_property('_gl_antialias', '1')
    layer.set_property('_gv_ogrfs_point',
                       'LABEL(t:{position},f:"' + font + '",c:' + cstr + ')')
    layer.set_read_only(gtk.TRUE)

    return layer
Пример #19
0
    def ogrfs_labels(self):
        self.set_step_name('OGRFS Labels')
        self.set_text( \
            'At the top of the screen should be two labels (red and blue)\n'
            + 'The red label has a halo effect.  The blue label has a drop\n'
            + 'shadow effect\n'
            + '\n'
            + 'In the middle of the screen should be four labels (red and\n'
            + 'yellow).  They have different anchor positions, and should\n'
            + 'be arrayed around a center reference point (not shown).\n'
            + 'The labels indicate where they should be (ie. TOP_LEFT should\n'
            + 'be to the top, and right of the center point).\n'
            + '\n'
            + 'In the lower left quadrant is a yellow "PIXEL_OFFSET" label\n'
            + 'that should be right and down of the white reference point.\n'
            + 'The offset is in screen pixels, so as you zoom it should\n'
            + 'remain a constant distance away from the reference point.\n'
            + '\n'
            + 'In the bottom right quadrant is a similar situation but\n'
            + 'the GEO_OFFSET label is offset in georeference coordinates\n'
            + 'so it will move closer to the ref point as you zoom out, and\n'
            + 'further from it as you zoom in.\n'
            + '\n'
            + 'All labels should be selectable and manipulatable.  When\n'
            + 'selected they should have a selection box around them.\n'
            + '\n' )

        shapes = gview.GvShapes()
        gview.undo_register(shapes)

        # Test anchors.

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 50, node=0)
        shape.set_property('_gv_ogrfs', 'LABEL(c:#FFFF00,t:"TOP_RIGHT")')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 50, node=0)
        shape.set_property('_gv_ogrfs',
                           'LABEL(c:#FF0000,p:7,t:"BOTTOM_RIGHT")')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 50, node=0)
        shape.set_property('_gv_ogrfs', 'LABEL(c:#FFFF00,p:9,t:"BOTTOM_LEFT")')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 50, node=0)
        shape.set_property('_gv_ogrfs', 'LABEL(c:#FF0000,p:3,t:"TOP_LEFT")')
        shapes.append(shape)

        # more anchor tests
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 35, node=0)
        shape.set_property('_gv_ogrfs',
                           'LABEL(c:#00FF00,p:2,t:"TOP_CENTER");' + \
                    'SYMBOL(id:ogr-sym-0)' )
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 43, node=0)
        shape.set_property('_gv_ogrfs',
                           'LABEL(c:#00FF00,p:5,t:"CENTER_CENTER");' + \
                    'SYMBOL(id:ogr-sym-0)' )
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 35, node=0)
        shape.set_property('_gv_ogrfs',
                           'LABEL(c:#00FF00,p:8,t:"BOTTOM_CENTER");' + \
                    'SYMBOL(id:ogr-sym-0)' )
        shapes.append(shape)

        # Test geographic and pixel offsets.

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(25, 25, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFFFF,s:2,id:ogr-sym-0)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(25, 25, node=0)
        shape.set_property(
            '_gv_ogrfs', 'LABEL(c:#FFFF00,dx:20px,dy:10px,t:"PIXEL_OFFSET")')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(60, 25, node=0)
        shape.set_property('_gv_ogrfs', 'SYMBOL(c:#FFFFFF,s:2,id:ogr-sym-0)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(60, 25, node=0)
        shape.set_property('_gv_ogrfs',
                           'LABEL(c:#FFFF00,dx:6g,dy:3g,t:"GEO_OFFSET")')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 75, node=0)
        shape.set_property(
            '_gv_ogrfs', 'LABEL(c:#00FF00,b:#339933,t:"Text with shadow",sh:)')
        shapes.append(shape)

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 80, node=0)
        shape.set_property('_gv_ogrfs',
                           'LABEL(c:#FF0000,b:#993333,t:"Text with halo",h:)')
        shapes.append(shape)

        layer = gview.GvShapesLayer(shapes)
        layer.set_name('test')
        self.view.add_layer(layer)
        self.view.set_active_layer(layer)

        self.view.fit_extents(0, 0, 100, 100)
Пример #20
0
    def execute(self, args, line, interp):
        import gdalnumeric
        import gview

        data = args[0][0]
        dataname = args[0][1]
        if data is None:
            interp.showText('No input variable supplied', 'error')
            return 0

        ncswitch = args[1]
        vswitch = args[2]

        if vswitch == 0:
            import gview
            win = gview.app.new_view()
            if gview.app.shell.standalone == 1:
                item = win.menuf.find('File/Exit')
                if item is not None:
                    item.hide()
                item = win.menuf.find('File/New View')
                if item is not None:
                    item.hide()
                item = win.menuf.find('File/Save Project')
                if item is not None:
                    item.hide()

        import Numeric
        if type(data) == type(Numeric.zeros([1, 1])):
            if ncswitch == 0:
                # By default, display a copy of the
                # data rather than the original
                import copy
                if len(Numeric.shape(data)) == 1:
                    # reshape 1x1 arrays so they can be
                    # displayed.
                    newdata = Numeric.reshape(data,
                                              (1, Numeric.shape(data)[0]))
                else:
                    newdata = copy.deepcopy(data)
            else:
                if len(Numeric.shape(data)) == 1:
                    txt = 'Vectors for display must have dimensions Nx1 or 1xN,\n'
                    txt = txt + 'not N.  Either reshape the array, or turn off the nocopy\nswitch '
                    txt = txt + 'so that show is permitted to reshape it for you.'
                    interp.showText(txt, 'error')
                    return 0

                newdata = data

            try:
                # Only array data should get to here
                array_name = gdalnumeric.GetArrayFilename(newdata)
                ds = gview.manager.get_dataset(array_name)
                #if prototype_name is not None:
                #    prototype_ds = gdal.Open( prototype_name )
                #    gdalnumeric.CopyDatasetInfo( prototype_ds, ds )

                gview.app.file_open_by_name(array_name)
                return 1
            except:
                interp.showText('Unable to open array.', 'error')
                return 0

        elif type(data) == type(gview.GvShapes()):

            cview = gview.app.sel_manager.get_active_view_window()
            cview.make_active()

            # Get an okay layer name
            layer_list = cview.viewarea.list_layers()
            layer_map = {}
            for clayer in layer_list:
                layer_map[clayer.get_name()] = clayer
            counter = 0

            name = dataname
            while layer_map.has_key(name):
                counter = counter + 1
                name = dataname + '_' + str(counter)

            if ncswitch == 0:
                newdata = gview.GvShapes()
                for item in data.get_schema():
                    newdata.add_field(item[0], item[1], item[2], item[3])
                for shp in data:
                    if shp is not None:
                        newdata.append(shp.copy())
            else:
                newdata = data

            newdata.set_name(name)
            gview.undo_register(newdata)
            layer = gview.GvShapesLayer(newdata)
            cview.viewarea.add_layer(layer)
            return 1
        else:
            interp.showText('Unable to recognize input data type.', 'error')
            return 0
Пример #21
0
    def vector_symbol(self):
        self.set_step_name('OGRFS Vector Symbol')
        self.set_text( \
            'You should see two three symbols.  In the middle of the screen\n'
            + 'an arrow pointing straight up.  Up and right of that should\n'
            + 'be a crossed arrow (slightly larger) pointing northeast and\n'
            + 'north west.  The north-west arrow should be green, and the\n'
            + 'north-east one red.\n'
            + '\n'
            + 'To the right of that should be a pair of blue arrows meeting\n'
            + 'at their bases.\n'
            + '\n'
            + '\n' )

        shapes = gview.GvShapes()
        gview.undo_register(shapes)

        # Insert a vector symbol that looks like an arrow into the symbol
        # manager.

        sm = gview.GvSymbolManager()

        shape = gview.GvShape(type=gview.GVSHAPE_LINE)
        shape.set_node(0.0, -6, node=0)
        shape.set_node(0.0, 6, node=1)
        shape.set_node(-2, 4, node=2)
        shape.set_node(0.0, 6, node=3)
        shape.set_node(2, 4, node=4)
        shape.set_property('_gv_ogrfs', 'PEN(w:2)')

        if os.name == "nt":
            sym_name = "\\rendertest_arrow"
        else:
            sym_name = "/rendertest_arrow"

        sm.inject_vector_symbol(sym_name, shape)

        # Place the symbol.

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 50, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:2,id:"' + sym_name + '")')
        shapes.append(shape)

        # Insert a vector symbol consisting of crossed arrows.

        sm = gview.GvSymbolManager()

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(0.0, 0, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(a:45,c:#00FF00,id:"' + sym_name + '");' + \
                           'SYMBOL(a:-45,id:"' + sym_name + '")' )

        if os.name == "nt":
            sym_name2 = "\\rendertest_carrow"
        else:
            sym_name2 = "/rendertest_carrow"
        sm.inject_vector_symbol(sym_name2, shape)

        # Place the symbol.

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(60, 60, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:4,id:"' + sym_name2 + '")')
        shapes.append(shape)

        # Insert a vector symbol consisting scaled arrows with offsets.

        sm = gview.GvSymbolManager()

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(0.0, 0, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(s:0.3333,a:45,dx:-6px,dy:-6px,id:"' + sym_name + '");' + \
                           'SYMBOL(s:0.666,a:-45,dx:12px,dy:-12px,id:"' + sym_name + '")')

        if os.name == "nt":
            sym_name2 = "\\rendertest_carrow2"
        else:
            sym_name2 = "/rendertest_carrow2"
        sm.inject_vector_symbol(sym_name2, shape)

        # Place the symbol.

        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(85, 60, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#0000FF,s:4,id:"' + sym_name2 + '")')
        shapes.append(shape)

        # Create the layer and display

        layer = gview.GvShapesLayer(shapes)
        layer.set_name('test')
        self.view.add_layer(layer)
        self.view.set_active_layer(layer)

        self.view.fit_extents(0, 0, 100, 100)
Пример #22
0
    def vector_symbol_from_file(self):
        symbols_dir = os.path.join(gview.home_dir, 'symbols')
        symbol1 = os.path.join(symbols_dir, 'square.xml')
        symbol2 = os.path.join(symbols_dir, 'square_filled.xml')
        symbol3 = os.path.join(symbols_dir, 'cross.xml')
        symbol4 = os.path.join(symbols_dir, 'x.xml')
        symbol5 = os.path.join(symbols_dir, 'triangle.xml')
        symbol6 = os.path.join(symbols_dir, 'triangle_filled.xml')
        symbol7 = os.path.join(symbols_dir, 'circle.xml')
        symbol8 = os.path.join(symbols_dir, 'circle_filled.xml')
        symbol9 = os.path.join(symbols_dir, 'dash.xml')
        self.set_step_name('OGRFS Vector Symbol from File')
        self.set_text( \
            'In the middle of the screen should be 9 green symbols.\n'
        'Symbols loaded from the following files:\n'
        + symbol1 + '\n'
        + symbol2 + '\n'
        + symbol3 + '\n'
        + symbol4 + '\n'
        + symbol5 + '\n'
        + symbol6 + '\n'
        + symbol7 + '\n'
        + symbol8 + '\n'
        + symbol9 + '\n'
            + '\n'
            + '\n' )

        shapes = gview.GvShapes()
        gview.undo_register(shapes)

        sm = gview.GvSymbolManager()

        sm.get_symbol(symbol1)
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(40, 40, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:2,id:"' + symbol1 + '")')
        shapes.append(shape)

        sm.get_symbol(symbol2)
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 40, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:2,id:"' + symbol2 + '")')
        shapes.append(shape)

        sm.get_symbol(symbol3)
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(60, 40, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:2,id:"' + symbol3 + '")')
        shapes.append(shape)

        sm.get_symbol(symbol4)
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(40, 50, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:2,id:"' + symbol4 + '")')
        shapes.append(shape)

        sm.get_symbol(symbol5)
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 50, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:2,id:"' + symbol5 + '")')
        shapes.append(shape)

        sm.get_symbol(symbol6)
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(60, 50, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:2,id:"' + symbol6 + '")')
        shapes.append(shape)

        sm.get_symbol(symbol7)
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(40, 60, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:2,id:"' + symbol7 + '")')
        shapes.append(shape)

        sm.get_symbol(symbol8)
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(50, 60, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:2,id:"' + symbol8 + '")')
        shapes.append(shape)

        sm.get_symbol(symbol9)
        shape = gview.GvShape(type=gview.GVSHAPE_POINT)
        shape.set_node(60, 60, node=0)
        shape.set_property('_gv_ogrfs',
                           'SYMBOL(c:#FF0000,s:2,id:"' + symbol9 + '")')
        shapes.append(shape)

        # Create the layer and display

        layer = gview.GvShapesLayer(shapes)
        layer.set_name('test')
        self.view.add_layer(layer)
        self.view.set_active_layer(layer)

        self.view.fit_extents(0, 0, 100, 100)
Пример #23
0
    def type_menu_cb(self, menu_item, classify_type):
        self.classify_type = classify_type

    def ok_cb(self, *args):
        self.classes = self.spinner.get_value_as_int()
        if self.user_ok_cb is not None:
            self.user_ok_cb(self, self.user_cb_data)
        self.hide()
        self.destroy()

    def cancel_cb(self, *args):
        if self.user_cancel_cb is not None:
            self.user_cancel_cb(self.user_cb_data, self)
        self.hide()
        self.destroy()


if __name__ == '__main__':
    gview.set_preference('ramp_directory', 'c:\\CIETmap\\ramps')
    shapes = gview.GvShapes(
        shapefilename="c:/projects/dmsolutions/ciet/ciet_data/wcsite.shp")
    layer = gview.GvShapesLayer(shapes=shapes)
    cls = GvClassification(layer)
    dlg = GvClassificationDlg(cls)
    dlg.apply_button.connect('clicked', cls.dump)
    dlg.apply_button.connect('clicked', gtk.mainquit)

    dlg.connect('delete-event', gtk.mainquit)
    dlg.show()
    gtk.mainloop()