Tapestry Objects is a spatially enabled
ActiveX DLL that provides Spatial Adjustment and Topological processing
capabilities to any Windows GIS Clients capable of interfacing to COM
objects.
Tapestry Objects enables GIS systems to carry out all the automated adjustment
functions supplied by SAM, whether it be adjusting vector layers to Orthophotos
or CAD Drawings, or moving utility, annotation and polygon layers from
an older inaccurate cadastre to a newer more accurate cadastre.
Tapestry Objects also enables GIS systems to carry out automated topological
testing, cleaning and snapping functions supplied by Topo Manager. Themes
can be tested for cleanliness or lack of vertical topology, or cleaned
up internally removing gaps and overlaps, dangles bowties and other topological
anomolies. Themes can also be snapped to other themes, and vertical topology
regained.
Tapestry Objects currently:
- Generates and reports Shift Vectors between two Digital Cadastres/Parcel
Maps.
- Adjust the Source Digital Cadastre and many Utility and Zoning Layers
to a Destination Cadastre.
- Report the new coordinates for inclusion for inclusion in the original
themes.
- Carry out Topo Test, Topo Clean and Topo Snapping functions.
Technical compatibility
Tapestry Objects is an ActiveX DLL and as such can be called from a wide
variety of windows applications. It has been designed to be GIS Vendor
free, and should work within ArcGIS, Manifold GIS, CadCorp GIS, and many
other GIS applications.
Beta Program
Please contact Spatial Tapestry if you would like to be on the Beta Program.
The Software Evaluation
Licensing Agreement will need to be signed, and faxed to our offices.
|
The following is sample VB6 code which carries out a small adjustment
of a small utility from one digital cadastre to another.
Dim FClass1 As New ST_Topo.Cls_Topo
Dim TDestName As String, TSrceName As String, Success As Boolean
Dim TShftName As String, TUtilName As String
Dim EastAdj As Double, NrthAdj As Double
TDestName = "Dest"
Success = FClass1.AddNewTheme(TDestName, ThemeClassification.DestDCad,
ThemeGeomType.PGon)
' set the number of features
Success = FClass1.SetFeatureCount(TDestName, 1)
' add feature 1
Success = FClass1.SetFeatureAttribute(TDestName, 1, "Feat01")
Success = FClass1.SetFeatureGeometry(TDestName, 1, ThemeGeomType.PGon,
1)
Success = FClass1.SetPartGeometry(TDestName, 1, 1, ThemeGeomType.PGon,
5)
Success = FClass1.SetFeatureCoordinate(TDestName, 1, 1, 1, 500#, 500#)
Success = FClass1.SetFeatureCoordinate(TDestName, 1, 1, 2, 500#, 600#)
Success = FClass1.SetFeatureCoordinate(TDestName, 1, 1, 3, 540#, 600#)
Success = FClass1.SetFeatureCoordinate(TDestName, 1, 1, 4, 540#, 500#)
Success = FClass1.SetFeatureCoordinate(TDestName, 1, 1, 5, 500#, 500#)
TSrceName = "Srce"
Success = FClass1.AddNewTheme(TSrceName, ThemeClassification.SrceDCad,
ThemeGeomType.PGon)
' set the number of features
Success = FClass1.SetFeatureCount(TSrceName, 1)
' add feature 1
Success = FClass1.SetFeatureAttribute(TSrceName, 1, "Feat01")
Success = FClass1.SetFeatureGeometry(TSrceName, 1, ThemeGeomType.PGon,
1)
Success = FClass1.SetPartGeometry(TSrceName, 1, 1, ThemeGeomType.PGon,
5)
Success = FClass1.SetFeatureCoordinate(TSrceName, 1, 1, 1, 600#, 500#)
Success = FClass1.SetFeatureCoordinate(TSrceName, 1, 1, 2, 600#, 600#)
Success = FClass1.SetFeatureCoordinate(TSrceName, 1, 1, 3, 640#, 600#)
Success = FClass1.SetFeatureCoordinate(TSrceName, 1, 1, 4, 640#, 500#)
Success = FClass1.SetFeatureCoordinate(TSrceName, 1, 1, 5, 600#, 500#)
TUtilName = "Util"
Success = FClass1.AddNewTheme(TUtilName, ThemeClassification.Utility,
ThemeGeomType.PGon)
' set the number of features
Success = FClass1.SetFeatureCount(TUtilName, 1)
' add feature 1
Success = FClass1.SetFeatureAttribute(TUtilName, 1, "Util01")
Success = FClass1.SetFeatureGeometry(TUtilName, 1, ThemeGeomType.PGon,
1)
Success = FClass1.SetPartGeometry(TUtilName, 1, 1, ThemeGeomType.PGon,
5)
Success = FClass1.SetFeatureCoordinate(TUtilName, 1, 1, 1, 590#, 490#)
Success = FClass1.SetFeatureCoordinate(TUtilName, 1, 1, 2, 590#, 610#)
Success = FClass1.SetFeatureCoordinate(TUtilName, 1, 1, 3, 630#, 610#)
Success = FClass1.SetFeatureCoordinate(TUtilName, 1, 1, 4, 630#, 480#)
Success = FClass1.SetFeatureCoordinate(TUtilName, 1, 1, 5, 580#, 490#)
TShftName = "Shifts"
Success = FClass1.AddNewTheme(TShftName, ThemeClassification.ShiftVector,
ThemeGeomType.Link)
FClass1.iDistPgon2Pgon = 120
FClass1.iMax_DiffDist = 3
FClass1.iMax_DiffAngle = 10
Success = FClass1.RunTopoJoins(TSrceName, TDestName, TShftName, TopoRoutines.PolygonTags)
Debug.Print FClass1.GetJoinCount(TShftName)
Dim NumJoins As Long, Cntr As Long, ControlTable As String, CtrlPntNo
As Long, BasePntNo1 As Long, Score2Beat As Single, DistBetween As Single,
CreatedBy As String, NumPntsUsed As Integer
NumJoins = FClass1.GetJoinCount(TShftName)
For Cntr = 1 To NumJoins
If FClass1.GetJoin(TShftName, Cntr, ControlTable, CtrlPntNo, BasePntNo1,
Score2Beat, DistBetween, CreatedBy, NumPntsUsed) Then
Debug.Print ControlTable, CtrlPntNo, BasePntNo1, Score2Beat, DistBetween,
CreatedBy, NumPntsUsed
End If
Next Cntr
Success = FClass1.RunIterativeBestGuess(TShftName, 50)
Success = FClass1.getFeatureCoordinateAdj(TUtilName, 1, 1, 1, EastAdj,
NrthAdj)
Debug.Print EastAdj, NrthAdj
Success = FClass1.getFeatureCoordinateAdj(TUtilName, 1, 1, 2, EastAdj,
NrthAdj)
Debug.Print EastAdj, NrthAdj
Success = FClass1.getFeatureCoordinateAdj(TUtilName, 1, 1, 3, EastAdj,
NrthAdj)
Debug.Print EastAdj, NrthAdj
Success = FClass1.getFeatureCoordinateAdj(TUtilName, 1, 1, 4, EastAdj,
NrthAdj)
Debug.Print EastAdj, NrthAdj
Success = FClass1.getFeatureCoordinateAdj(TUtilName, 1, 1, 5, EastAdj,
NrthAdj)
Debug.Print EastAdj, NrthAdj
|