Petra.Gis concept


Whole project is set of more or less dependent assemblies. Dependency is important for variability of source use and even assembly organization for various technologies.

Each set of assemblies makes service and service is specialized to some GIS task.

Another BIG reason for split services into more independent assemblies is that it is easier to understand the code and dependencies. Usual big problem with various java ports of GIS frameworks is that it is hugh and full of hidden (undocumented) dependencies.

Currently supported services

browse source code


 GeometryServices

assemblies: Geometry, Geometry.Utils

Geometry

provides access to SFS+ geometry model, handles basic geometry tasks such as create geometry object, manipulate geometry definition, maintain basic geometry integrity, ...

 Note: is fully independent from any other Petra.Gis assembly

Geometry.Utils

provides extended functionality for geometry such as Arc manipulation (stroke), Grid/Image geometry discover (pixel resolution operations, grid transform prepare,...), surface operations (get area, orientation,...)

  Note: depends on Petra.Gis.Geometry and Petra.Gis.ReferenceSystemsServices assembly

  


ReferenceSystemsServices

assemblies: SpatialReferenceSystems, ReferenceSystemsServices.Transformations

SpatialReferenceSystems

represents spatial reference systems (SRS) object model for most of world-wide used coordinate systems, including altitude models. All SRS supports XAML and JSON storage. Not all transforms supports JSON and XAML as there is no reason to persist them.

Some transforms should exist only in memory at time of use (they are build from transform parameters), for example projection transforms. As oposite, datum transforms supports JSON, XAML and can be saved including their parameters to let Petra.Gis search over predefined datum transforms in cache.

Note: depends on Petra.Gis.Geometry assembly

ReferenceSystemsServices.Transformations

represents model for geometry transformation between various SRS, using various methods (transformation algorithms)

Note: depends on Petra.Gis.Geometry, Petra.Gis.ReferenceSystemsServices assembly



ImagingServices
assemblies: Imaging.Cit, Imaging.Tiff, ImagingServicesBase
ImagingServicesBase

basic functionality of Image data decoder, mostly abstract classes . As it is impossible to inherit from WPF BitmapDecoder this assembly replaces BitmapDecoder and Petra.Gis accepts image create from both WPF BitmapDecoder (GifBitmapDecoder, JpgBitmapDecoder,...) and this assembly SimpleBitmapDecoder.

Note: is fully independent from any other Petra.Gis assembly

Imaging.Cit

decodes Intergraph Cit image type that uses fax CCIT3 compression.

Note: depends on Petra.Gis.ImagingServiceBase assembly

Imaging.Tiff

decodes tiff image type with all possible geometry type and all possible color schemas supported on windows platform up to 32bpp. Decoder produces WPF BitmapData and is optimized for small memory footprint during image processing (read). Currently geoTiff tag is unsupported. Intergraph extension to tiff called tiles is supported.

Note: depends on Petra.Gis.ImagingServiceBase, SharpZipLib.dll assembly

  


 DataServices

assemblies: SpatialDataBase, DataProviderBase, GridData, GeometryFactoryBase, SHP.GeometryFactory, GDO.GeometryFactory, GDO.Sqlserver, SHP

SpatialDataBase

simple data provider base classes (independent from System.Data that is unavailable for example in Silverlight). This data provider handles non-file base rather in memory spatial data sets and spatial fields. Mostly abstract classes. Represents also spatial metadata, that describe features (data provider, contacts, data SRS, precision,...) and spatial fields (geometry type, domain, SRS,...)

Note: depends on Petra.Gis.Geometry, Petra.Gis.ReferenceSystemsServices, Petra.Gis.DataServices.Metadata

Grid.DataProvider

provides basic functionality to open Grid/Image data linked to Grid/Image geometry type. Functionality is separated from all other assemblies as available set of image decoders might vary for different platforms (for example Silverlight doesn't support file based images, only web download, Windows Phone might have limited support to some decoders,...)

Note: depends on Petra.Gis.EnvironmentServices, Petra.Gis.Geometry, Petra.Gis.ImagingServicesBase (!!!contains indirect dependencies !!!)

DataProviderBase

extends System.Data namespace and keeps its philosophy for spatial data. Defines extensions for dbConnection, dbCommand, ... with spatial data support (spatial filters, spatial metadata, spatial fields,...). Mostly abstract classes.

Note: depends on Petra.Gis.DataServices.Metadata, Petra.Gis.DataServices.SpatialDataBase, Petra.Gis.EnvironmentServices, Petra.Gis.Geometry, Petra.Gis.GeometryFactoryBase, Petra.Gis.ReferenceSystemsServices (!!!contains indirect dependencies !!!)

GeometryFactoryBase

base assembly for geometry factories for SFS feature model. Defines currently just endian manipulation and common geometry factory interface

Note: depends on Petra.Gis.Geometry assembly

SHP.GeometryFactory

binary geometry factory that reads SHP binary data from SHP data provider and represents it as Petra.Gis geometries.

Note: depends on Petra.Gis.GeometryFactoryBase, Petra.Gis.Geometry, Petra.Gis.Geometry.Utils assembly (!!!contains indirect dependencies !!!)

SHP.DataProvider

SHP file data provider that can read shp, shx, dbf files and represents it as System.Data data source. Attributes are represented as normal data fields, geometries are parsed by SHP.GeometryFactory as spatial fields.

Note: depends on Petra.Gis.DataProviderBase, Petra.Gis.DataServices.SHP.GeometryFactory, Petra.Gis.DataServices.Metadata, Petra.Gis.DataServices.SpatialDataBase, Petra.Gis.Geometry, Petra.Gis.GeometryFactoryBase, Petra.Gis.ReferenceSystemsServices (!!!contains indirect dependencies !!!)

GDO.GeometryFactory

binary geometry factory that reads GDO binary data from any GDO data provider and represents it as Petra.Gis geometries.

Note: depends on Petra.Gis.GeometryFactoryBase, Petra.Gis.Geometry, Petra.Gis.DataServices.GridData assembly (!!!contains indirect dependencies !!!)

GDO.Sqlserver

SQLServer GDO data provider reads data stored in Intergraph Geomedia structure in sqlserver database. Attributes are represented as normal data fields, geometries are parsed by GDO.GeometryFactory as spatial fields.

Note: depends on Petra.Gis.DataProviderBase, Petra.Gis.DataServices.GDO.GeometryFactory, Petra.Gis.DataServices.Metadata, Petra.Gis.DataServices.SpatialDataBase, Petra.Gis.Geometry, Petra.Gis.GeometryFactoryBase, Petra.Gis.ReferenceSystemsServices (!!!contains indirect dependencies !!!)

WKB.GeometryFactory

binary geometry factory that reads OGC WKB binary data from input binary stream and represents it as Petra.Gis geometries and back.

Note: depends on Petra.Gis.GeometryFactoryBase, Petra.Gis.Geometry assembly (!!!contains indirect dependencies !!!)

WKT.GeometryFactory

binary geometry factory that reads OGC WKT text data from input string and represents it as Petra.Gis geometries and back.

Note: depends on Petra.Gis.GeometryFactoryBase, Petra.Gis.Geometry assembly (!!!contains indirect dependencies !!!)

MSSQL10.GeometryFactory

binary geometry factory that reads geometry and geography binary data from sqlserver 10 and represents it as Petra.Gis geometries. Read more about this factory here

Note: depends on Petra.Gis.GeometryFactoryBase, Petra.Gis.Geometry assembly (!!!contains indirect dependencies !!!)



RenderingServices

assemblies: RenderingServices.PlanarBase, RenderingServices.GDIPlus

RenderingServices.PlanarBase

defines basic, mostly abstract classes for map viewing. Map is driven by legend. Legend has display order collection and tree/categorized legend node collection. Assembly implements some geometry display transforms, geometry clipping,... Whole concept is based on Renderers that are responsible for geometry render/transform from storage to specific rendering output.

Note: depends on Petra.Gis.DataProviderBase, Petra.Gis.DataServices.GridData, Petra.Gis.DataServices.Metadata, Petra.Gis.EnvironmentServices, Petra.Gis.Geometry, Petra.Gis.ReferenceSystemServices.Transformations, Petra.Gis.ReferenceSystemsServices (!!!contains indirect dependencies !!!)

RenderingServices.GDIPlus

Specific functionality for render maps with GDI+ as image. High precision Grid/Image transform is coded here.

Note: depends on Petra.Gis.DataServices.GridData, Petra.Gis.DataServices.Metadata, Petra.Gis.EnvironmentServices, Petra.Gis.Geometry, Petra.Gis.Geometry.Utils, Petra.Gis.ReferenceSystemServices.Transformations, Petra.Gis.ReferenceSystemsServices, Petra.Gis.RenderingServices.PlanarBase (!!!contains indirect dependencies !!!)

 


EnvironmentServices

assemblies: Environment

Environment

contains object that manages whole Petra.Gis behaviour and capabilities. Implements 4 levels of configuration : System hardcoded, Petra.Gis version dependent, User dependent and project dependent. Handles also all custom components invocation, such as third party image decoders, custom transformations, ... Manages project persistency,...

Note: depends on Petra.Gis.DataProviderBase, Petra.Gis.Geometry, Petra.Gis.ReferenceSystemServices.Transformations, Petra.Gis.ReferenceSystemsServices


Last edited Nov 16, 2011 at 6:33 AM by asida, version 15

Comments

No comments yet.