Categories
Без категория

Премахване на елемент от масив във Visual Basic

Премахване на елементи от масив във Visual Basic:

1. Прост метод без запазване на реда в масива

arr(index) = arr(UBound(arr))
ReDim Preserve arr(UBound(arr) - 1)

2. Метод със запазване на реда в масива

For i As Integer = index To UBound(arr) - 1
arr(i) = arr(i + 1)
Next i
ReDim Preserve arr(UBound(arr) - 1)
Categories
VB.NET

Трансформиране в Гаусова проекция

Програма на VB.NET за трансформиране на координати в гаусова проекция в 3-градусови и 6-градусови ивици.

Формат на входния файл:

номер_точка географска_ширина географска_дължина

За разделител се използва интервал.

Географски ширина и дължина в градуси.

Настройки

Възможност за избор на елипсоид и гаусови ивици – 3-градусови или 6-градусови.

Показва следните данни:

  • Проекционни координати X, Y в метри;
  • Меридианна конвергенция в градуси;
  • Мащаб;
  • Зона;

Интерфейс:

GK
Categories
VB.NET

Софтуер за сваляне на файлове

File Downloader е примерен проект на софтуер за сваляне на файлове, написан на VB.NET, използващ класовете DownloadFileAsyncExtended.vb и ListViewExtended.vb.

Функционалност:

  • Добавяне на файлове за сваляне;
  • Прекъсване свалянето на един, няколко или всички файлове;
  • Възобновяване свалянето на един, няколко или всички файлове;
  • Премахване на един, няколко или всички файлове от списъка със задачи;
  • Прогрес в проценти и килобайти, скорост на сваляне в килобайти, оставащо време, изминало време, размер на файла, състояние на сваляне.

Интерфейс:

File Downloader
Categories
VB.NET

Транспониране на матрица във VB.NET

Функция на Visual Basic за транспониране на матрици.

Public Class Matrix
Public Shared Function mTranspose(ByVal m1(,) As Double)
Dim m2(m1.GetLength(1), m1.GetLength(0)) As Double
For i As Integer = 0 To m1.GetLength(0) - 1
For j As Integer = 0 To m1.GetLength(1) - 1
m2(j, i) = m1(i, j)
Next j
Next i
Return m2
End Function
End Class
view raw Matrix.vb hosted with ❤ by GitHub
Categories
VB.NET

Умножение на матрици във VB.NET

Функция на Visual Basic за умножение на матрици.

Public Class Matrix
Public Shared Function mMult(ByVal m1(,) As Double, ByVal m2(,) As Double)
Dim m3(m1.GetLength(0), m2.GetLength(1)) As Double
For i As Integer = 0 To m1.GetLength(0) - 1
For j As Integer = 0 To m1.GetLength(1) - 1
For k As Integer = 0 To m2.GetLength(1) - 1
m3(i, k) += m1(i, j) * m2(j, k)
Next k
Next j
Next i
Return m3
End Function
End Class
view raw Matrix.vb hosted with ❤ by GitHub
Categories
VB.NET

Софтуер за отваряне на shape файлове

Shapefile Viewer е софтуер за отваряне и визуализиране на ESRI Shape файлове (*.shp).

Софтуерът използва библиотеката MapWinGIS.

Основни функции на програмата:

  • Приближаване (Zoom In);
  • Отдалечаване (Zoom Out);
  • Движение (Pan);
  • Пълен обхват (Full Extent);
  • Отваряне на Shape файл;
  • Показване на атрибути;
  • Търсене и визуализиране по поле и стойност.

Интерфейс:

Shapefile Viewer
Categories
VB.NET

Нерегулярна мрежа от триъгълници

TIN е софтуер за създаване на нерегулярни мрежи от триъгълници (Triangulated Irregular Network, TIN) по метода на Делоне (Триангулация на Делоне).

Програмата използва входен файл с точки във формат x, y.

Програмата използва библиотека MapWinGIS за визуализиране на триъгълниците и точките.

Визуализация:

TIN
Categories
VB.NET

Vbox7 Downloader

Описание:

Vbox7 Downloader е програма за сваляне на видео клипове от Vbox7.com.

Програмата е написана на VB.NET и изисква .NET FRAMEWORK 4.0, за да работи.

Тествана е на операционна система Windows XP Service Pack 3.

Проект:

Vbox7 Downloader

Визуализация:

Vbox7 Downloader
Categories
VB.NET

Отваряне на ESRI Shape (SHP) файлове

Проект на VB.NET за отваряне на ESRI Shape (*.shp) файлове.

Използва е библиотеката SharpMap.

Функционалност:

  • Отваряне на файл;
  • Показване/скриване на слой;
  • Приближаване в пълен обхват;
  • Местене.

Този код може да се използва и модифицира без никакви ограничения.

Автор: GNNMobile.eu

Imports SharpMap
Imports System.IO
Imports System.Drawing
Public Class Main
Private isNewLayer As Boolean = False
Private Sub formLoad() Handles MyBase.Load
Try
btnZoomToExtents.Enabled = False
btnPan.Enabled = False
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub zoomToExtents() Handles btnZoomToExtents.Click
Try
With MC
.Map.ZoomToExtents()
.Refresh()
End With
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub pan() Handles btnPan.Click
Try
MC.ActiveTool = SharpMap.Forms.MapBox.Tools.Pan
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub open() Handles btnOpen.Click
Try
With OpenFD
.InitialDirectory = Directory.GetCurrentDirectory
.Title = "Отваряне на Shp файл:"
.Filter = "Shp файлове (*.shp)|*.shp"
End With
If OpenFD.ShowDialog = DialogResult.OK Then
addLayer(OpenFD.SafeFileName, OpenFD.FileName)
isNewLayer = True
Layers.Items.Add(OpenFD.SafeFileName, True)
btnZoomToExtents.Enabled = True
btnPan.Enabled = True
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub changeLayerVisibility() Handles Layers.ItemCheck
Try
If isNewLayer = False Then
Dim layer As SharpMap.Layers.ILayer = MC.Map.Layers(Layers.SelectedItem)
layer.Enabled = If(Layers.GetItemCheckState(Layers.SelectedIndex) = 0, True, False)
MC.Refresh()
Else
isNewLayer = False
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub addLayer(ByVal layerName As String, ByVal file As String)
Dim vectorLayer = New SharpMap.Layers.VectorLayer(layerName)
vectorLayer.DataSource = New SharpMap.Data.Providers.ShapeFile(file, True)
With MC
.Map.Layers.Add(vectorLayer)
.Map.ZoomToExtents()
.Refresh()
End With
End Sub
End Class
view raw Main.vb hosted with ❤ by GitHub

Визуализация:

SharpMap Shapefile Demo
Categories
VB.NET

Решаване на геодезически засечки

Описание:

Това е клас за решаване на геодезически засечки на VB.NET.

Класът включва методи за решаване на права и линейна засечка.

Не е включен метод за решаване на обратна засечка.

Връзки:

Код:

Imports System
Imports System.Math
Public Class PointDetermination
Public Structure Point
Public x, y As Double
End Structure
Public Structure Result
Public x, y As Double
Public m_x, m_y, m_p As Double
End Structure
Private ro As Double = 636.6197
Public Function intersection(ByVal pntA As Point, ByVal pntB As Point, _
ByVal b1 As Double, ByVal b2 As Double, _
ByVal mB As Integer) As Result
Dim angle As Object = New Angle
Dim sap, sbp, c As Double
Dim b3, aap, abp, aab, aba As Double
Dim pntP(2) As Point
Dim res As Result
If pntA.x = pntB.x And pntA.y = pntB.y Then
Throw New Exception(String.Format(My.Resources.equivalentPoints, "A", "B"))
End If
If (b1 + b2) >= 200 Then
Throw New Exception(My.Resources.invalidAngleValue)
End If
If b1 <= 0 Or b2 <= 0 Then
Throw New Exception(My.Resources.invalidAngleValue)
End If
aab = angle.headingAngle(pntB.y - pntA.y, pntB.x - pntA.x)
c = Sqrt(Math.Pow(pntB.y - pntA.y, 2) + Math.Pow(pntB.x - pntA.x, 2))
b3 = 200 - (b1 + b2)
sap = (c * Sin(angle.toRad(b2))) / Sin(angle.toRad(b3))
sbp = (c * Sin(angle.toRad(b1))) / Sin(angle.toRad(b3))
aap = If(aab - b1 < 0, aab - b1 + 400, aab - b1)
aba = If(aab < 200, aab + 200, aab - 200)
abp = If(aba + b2 > 400, aba + b2 - 400, aba + b2)
With pntP(0)
.x = pntA.x + sap * Cos(angle.toRad(aap))
.y = pntA.y + sap * Sin(angle.toRad(aap))
End With
With pntP(1)
.x = pntB.x + sbp * Cos(angle.toRad(abp))
.y = pntB.y + sbp * Sin(angle.toRad(abp))
End With
With res
.x = (pntP(0).x + pntP(1).x) * 0.5
.y = (pntP(0).y + pntP(1).y) * 0.5
.m_x = Nothing
.m_y = Nothing
.m_p = (mB / (ro * Sin(angle.toRad(b3)))) * Sqrt(Math.Pow(sap, 2) + Math.Pow(sbp, 2))
End With
Return res
End Function
Public Function arcSection(ByVal pntA As Point, ByVal pntB As Point, _
ByVal sap As Double, ByVal sbp As Double, _
ByVal a As Double, ByVal b As Double) As Result
Dim angle As Object = New Angle
Dim b1, b2, b3 As Double
Dim aap, abp, aab, aba As Double
Dim dx, dy, s, c As Double
Dim m_s As Double
Dim pntP(2) As Point
Dim res As Result
If pntA.x = pntB.x And pntA.y = pntB.y Then
Throw New Exception(String.Format(My.Resources.equivalentPoints, "A", "B"))
End If
If sap <= 0 Or sbp <= 0 Then
Throw New Exception(My.Resources.negativeOrZeroLengthSide)
End If
If (Sqrt(Math.Pow(pntA.x - pntB.x, 2) + Math.Pow(pntA.y - pntB.y, 2))) >= (sap + sbp) Then
Throw New Exception(My.Resources.notAVerticesOfATriangle)
End If
If (Sqrt(Math.Pow(pntA.x - pntB.x, 2) + Math.Pow(pntA.y - pntB.y, 2)) + sap) <= sbp Then
Throw New Exception(My.Resources.notAVerticesOfATriangle)
End If
If (Sqrt(Math.Pow(pntA.x - pntB.x, 2) + Math.Pow(pntA.y - pntB.y, 2)) + sbp) <= sap Then
Throw New Exception(My.Resources.notAVerticesOfATriangle)
End If
dy = pntB.y - pntA.y
dx = pntB.x - pntA.x
aab = angle.headingAngle(dy, dx)
c = Sqrt(Math.Pow(dy, 2) + Math.Pow(dx, 2))
s = 0.5 * (sap + sbp + c)
b1 = 2 * angle.toGrad(Atan(Sqrt(((s - sap) * (s - c)) / (s * (s - sbp)))))
b2 = 2 * angle.toGrad(Atan(Sqrt(((s - sbp) * (s - c)) / (s * (s - sap)))))
b3 = 2 * angle.toGrad(Atan(Sqrt(((s - sap) * (s - sbp)) / (s * (s - c)))))
aap = If(aab - b1 < 0, aab - b1 + 400, aab - b1)
aba = If(aab < 200, aab + 200, aab - 200)
abp = If(aba + b2 > 400, aba + b2 - 400, aba + b2)
With pntP(0)
.x = pntA.x + sap * Cos(angle.toRad(aap))
.y = pntA.y + sap * Sin(angle.toRad(aap))
End With
With pntP(1)
.x = pntB.x + sbp * Cos(angle.toRad(abp))
.y = pntB.y + sbp * Sin(angle.toRad(abp))
End With
m_s = a + b * (((sap + sbp) * 0.001) * 0.5)
With res
.x = (pntP(0).x + pntP(1).x) * 0.5
.y = (pntP(0).y + pntP(1).y) * 0.5
.m_x = (m_s / Sin(angle.toRad(b3))) * Sqrt(Math.Pow(Sin(angle.toRad(aap)), 2) + Math.Pow(Sin(angle.toRad(abp)), 2))
.m_y = (m_s / Sin(angle.toRad(b3))) * Sqrt(Math.Pow(Cos(angle.toRad(aap)), 2) + Math.Pow(Cos(angle.toRad(abp)), 2))
.m_p = (m_s / Sin(angle.toRad(b3))) * Sqrt(2)
End With
Return res
End Function
End Class