1 votos

¿Cómo escribir una expresión con vb.net en mapwingis (ShapefileCategory.Expression)?

Me gustaria dar color al mapa con nueva categoria. para hacer debo hacer expresion previa. Lo he intentado pero sigo sin conseguirlo. ¿Qué es lo que falla? Ayudame por favor.

 Dim category As MapWinGIS.ShapefileCategory = sf.Categories.Add("Manual")
Dim ad As String = "Alaska"
Dim UniqueShape As New MapWinGIS.Shapefile
UniqueShape = FormMain.AxMapMain.get_GetObject(idx)

Dim af As String = UniqueShape.Table.Field(1).Name
Const cote As String = """"

'failed
' category.Expression = "[STATE_NAME] = """ + ad + """"
'failed
' category.Expression = "[STATE_NAME] <> """""
'failed
category.Expression = "[" + af + "] = " + ad
'failed
category.Expression = "[STATE_NAME] = " & cote & "Alaska" & cote
'failed
'category.Expression = "[STATE_NAME] = ""Alaska"""

Dim utils As New MapWinGIS.Utils
category.DrawingOptions.FillColor = utils.ColorByName(MapWinGIS.tkMapColor.Magenta)
sf.Categories.ApplyExpression(0)

sf.DefaultDrawingOptions.Visible = False
' FormMain.AxMapMain.AddLayer(sf, True)
FormMain.AxMapMain.Redraw()
FormMain.AxMapMain.Refresh()

1voto

user72153 Puntos 18

El código no define las DrawingOptions para la expresión que está utilizando, por lo que vuelve a las opciones de dibujo por defecto. A continuación, la función GetShapeCategories() devuelve un ShapeCategories con 2 expresiones definidas (no he incluido las opciones de dibujo para el segundo - usted elegiría un color diferente o tamaño de punto / forma) - (tenga en cuenta las categorías se añaden a la colección cuando se crean):

Function GetShapeCategories() As ShapefileCategories
  Dim shpCategories As New ShapefileCategories() With {.Caption = "Status"}

  Dim CategoryComplete As ShapefileCategory = shpCategories.Add("Completed")
  CategoryComplete.Expression = "[Completed] = 1"
  Dim sdComplete As New ShapeDrawingOptions
  Dim utils As New MapWinGIS.Utils
  sdComplete.FillColor = utils.ColorByName(tkMapColor.Red)
  sdComplete.FillColor2 = utils.ColorByName(tkMapColor.Red)
  sdComplete.FillTransparency = 200
  sdComplete.LineColor = utils.ColorByName(tkMapColor.Red)
  sdComplete.PointShape = tkPointShapeType.ptShapeCircle
  sdComplete.PointSize = 30
  sdComplete.Visible = True
  CategoryComplete.DrawingOptions = sdComplete

  Dim CategoryIncomplete As ShapefileCategory = shpCategories.Add("Incomplete")
  CategoryIncomplete.Expression = "[Completed] = 2"
  # Define Drawing Options for this Category - sdIncomplete
  # CategoryIncomplete.DrawingOptions = sdIncomplete

  Return shpCategories
End Function

Finalmente al dibujar, ejecutamos esto:

  # You can set different Categories based on different requirements

  _Shp.DefaultDrawingOptions = GetDefaultDrawingOptions()
  _Shp.SelectionDrawingOptions = GetSelectionOptions()
  _Shp.Categories = GetShapeCategories()
  _Shp.Categories.ApplyExpressions()

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X