示例#1
0
        public void UpdateSite(Site site)
        {
            if (site.PosAreaType == 0) {
                if (site.PosX1.GetValueOrDefault(0) != 0 || site.PosY1.GetValueOrDefault(0) != 0) {
                    site.PosAreaType = (int)AreaType.Point;
                }
            }

            StoredProcUpdate("spSiteUpdate",
                _P("intSiteID", site.SiteID),
                _P("vchrSiteName", site.SiteName),
                _P("intPoliticalRegionID", site.PoliticalRegionID),
                _P("tintLocalType", site.LocalityType),
                _P("vchrLocal", site.Locality),
                _P("vchrDistanceFromPlace", site.DistanceFromPlace),
                _P("vchrDirFromPlace", site.DirFromPlace),
                _P("vchrInformalLocal", site.InformalLocal),
                _P("tintPosCoordinates", site.PosCoordinates),
                _P("tintPosAreaType", site.PosAreaType),
                _P("fltPosX1", site.PosX1),
                _P("fltPosY1", site.PosY1),
                _P("fltPosX2", site.PosX2),
                _P("fltPosY2", site.PosY2),
                _P("tintPosXYDisplayFormat", site.PosXYDisplayFormat),
                _P("vchrPosSource", site.PosSource),
                _P("vchrPosError", site.PosError),
                _P("vchrPosWho", site.PosWho),
                _P("vchrPosDate", site.PosDate),
                _P("vchrPosOriginal", site.PosOriginal),
                _P("vchrPosUTMSource", site.PosUTMSource),
                _P("vchrPosUTMMapProj", site.PosUTMMapProj),
                _P("vchrPosUTMMapName", site.PosUTMMapName),
                _P("vchrPosUTMMapVer", site.PosUTMMapVer),
                _P("tintElevType", site.ElevType),
                _P("fltElevUpper", site.ElevUpper),
                _P("fltElevLower", site.ElevLower),
                _P("fltElevDepth", site.ElevDepth),
                _P("vchrElevUnits", site.ElevUnits),
                _P("vchrElevSource", site.ElevSource),
                _P("vchrElevError", site.ElevError),
                _P("vchrGeoEra", site.GeoEra),
                _P("vchrGeoState", site.GeoState),
                _P("vchrGeoPlate", site.GeoPlate),
                _P("vchrGeoFormation", site.GeoFormation),
                _P("vchrGeoMember", site.GeoMember),
                _P("vchrGeoBed", site.GeoBed),
                _P("vchrGeoName", site.GeoName),
                _P("vchrGeoAgeBottom", site.GeoAgeBottom),
                _P("vchrGeoAgeTop", site.GeoAgeTop),
                _P("vchrGeoNotes", site.GeoNotes)
            );
        }
示例#2
0
        private int GetSiteNumber(int regionId)
        {
            // test to see if an internal number is present in the incoming dataset
            var existingSiteId = Get("Site.ExistingSiteID");
            if (!String.IsNullOrEmpty(existingSiteId)) {
                var site = MaterialService.GetSite(Int32.Parse(existingSiteId));
                if (site != null) {
                    return site.SiteID;
                }
            }
            // No existing site found? need to create it

            var strLocal = Get("Site.Locality");
            var strOffSetDis = Get("Site.Distance from place");
            var strOffsetDir = Get("Site.Direction from place");
            var strInformal = Get("Site.Informal Locality");

            double? x1 = GetConvert<double?>("Site.Longitude", null);
            double? y1 = GetConvert<double?>("Site.Latitude", null);
            double? x2 = GetConvert<double?>("Site.Longitude 2", null);
            double? y2 = GetConvert<double?>("Site.Latitude 2", null);

            var iPosAreaType = GetPositionType();
            int iLocalType = 0; // TODO? Can we workout what this is supposed to be?
            var iElevationType = GetElevationType();

            int iCoordinateType;

            GetSiteCoordinates(out iCoordinateType, ref x1, ref y1, ref x2, ref y2);

            var strName = Get("Site.Site Name");
            if (string.IsNullOrWhiteSpace(strName)) {
                strName = strLocal;
            }

            double? elevUpper = null;
            double? elevLower = null;
            double? elevDepth = null;
            string elevUnits = null;

            var elevResult = GetConvert<UnitRange>("Site.Elevation upper");
            if (elevResult != null) {
                switch (elevResult.RangeType) {
                    case UnitRangeType.SingleValueNoUnits:
                        elevUpper = elevResult.Upper;
                        break;
                    case UnitRangeType.SingleValueWithUnits:
                        elevUpper = elevResult.Upper;
                        elevUnits = elevResult.Units;
                        break;
                    case UnitRangeType.RangeNoUnits:
                        elevUpper = Math.Max(elevResult.Upper, elevResult.Lower);
                        elevLower = Math.Min(elevResult.Upper, elevResult.Lower); ;
                        break;
                    case UnitRangeType.RangeWithUnits:
                        elevUpper = Math.Max(elevResult.Upper, elevResult.Lower);
                        elevLower = Math.Min(elevResult.Upper, elevResult.Lower); ;
                        elevUnits = elevResult.Units;
                        break;
                }
            }

            elevResult = GetConvert<UnitRange>("Site.Elevation lower");
            if (elevResult != null) {
                switch (elevResult.RangeType) {
                    case UnitRangeType.SingleValueNoUnits:
                        elevLower = elevResult.Upper;
                        break;
                    case UnitRangeType.SingleValueWithUnits:
                        elevLower = elevResult.Upper;
                        elevUnits = elevResult.Units;
                        break;
                    case UnitRangeType.RangeNoUnits:
                        elevUpper = Math.Max(elevResult.Upper, elevResult.Lower);
                        elevLower = Math.Min(elevResult.Upper, elevResult.Lower); ;
                        break;
                    case UnitRangeType.RangeWithUnits:
                        elevUpper = Math.Max(elevResult.Upper, elevResult.Lower);
                        elevLower = Math.Min(elevResult.Upper, elevResult.Lower); ;
                        elevUnits = elevResult.Units;
                        break;
                }
            }

            var depthResult = GetConvert<UnitRange>("Site.Elevation depth");
            if (depthResult != null) {
                switch (depthResult.RangeType) {
                    case UnitRangeType.SingleValueNoUnits:
                        elevDepth = depthResult.Upper;
                        break;
                    case UnitRangeType.SingleValueWithUnits:
                        elevDepth = depthResult.Upper;
                        elevUnits = depthResult.Units;
                        break;
                    case UnitRangeType.RangeNoUnits:
                        elevUpper = Math.Min(depthResult.Upper, depthResult.Lower);
                        elevLower = Math.Max(depthResult.Upper, depthResult.Lower);
                        break;
                    case UnitRangeType.RangeWithUnits:
                        elevUpper = Math.Min(depthResult.Upper, depthResult.Lower);
                        elevLower = Math.Max(depthResult.Upper, depthResult.Lower);
                        elevUnits = depthResult.Units;
                        break;
                }
            }

            // An explicit units mapping will override an implicit one inferred from a range, but if not, keep the inferred one, if any
            elevUnits = Get("Site.Elevation units", elevUnits);

            var cachedSite = FindCachedSite(strName, strLocal, strOffSetDis, strOffsetDir, strInformal, iLocalType, x1, y1, x2, y2);

            if (cachedSite != null) {
                return cachedSite.SiteID;
            } else {
                // Create the Site object from the source material....
                var site = new Site {
                    SiteName = strName,
                    PoliticalRegionID = regionId,
                    LocalityType = iLocalType,
                    Locality = strLocal,
                    DistanceFromPlace = strOffSetDis,
                    DirFromPlace = strOffsetDir,
                    InformalLocal = Get("Site.Informal locality"),
                    PosCoordinates = iCoordinateType,
                    PosAreaType = iPosAreaType,
                    PosX1 = x1,
                    PosY1 = y1,
                    PosX2 = x2,
                    PosY2 = y2,
                    PosXYDisplayFormat = 1,
                    PosSource = Get("Site.Position source"),
                    PosError = Get("Site.Position error"),
                    PosWho = Get("Site.Generated by"),
                    PosDate = Get("Site.Generated on"),
                    PosOriginal = Get("Site.Original position"),
                    PosUTMSource = Get("Site.UTM source"),
                    PosUTMMapProj = Get("Site.UTM map projection"),
                    PosUTMMapName = Get("Site.UTM map name"),
                    PosUTMMapVer = Get("Site.UTM map version"),
                    ElevType = iElevationType,
                    ElevUpper = elevUpper,
                    ElevLower = elevLower,
                    ElevDepth = elevDepth,
                    ElevUnits = elevUnits,
                    ElevSource = Get("Site.Elevation source"),
                    ElevError = Get("Site.Elevation error"),
                    GeoEra = Get("Site.Geological era"),
                    GeoState = Get("Site.Geological state"),
                    GeoPlate = Get("Site.Geological plate"),
                    GeoFormation = Get("Site.Geological formation"),
                    GeoMember = Get("Site.Geological member"),
                    GeoBed = Get("Site.Geological bed"),
                    GeoName = Get("Site.Geological name"),
                    GeoAgeBottom = Get("Site.Geological age bottom"),
                    GeoAgeTop = Get("Site.Geological age top"),
                    GeoNotes = Get("Site.Geological notes")
                };
                var siteID = Service.ImportSite(site);
                _siteCache.Add(new CachedSite { SourceRowID = CurrentRowId, Name = site.SiteName, Locality = site.Locality, OffsetDistance = site.DistanceFromPlace, OffsetDirection = site.DirFromPlace, InformalLocality = site.InformalLocal, X1 = site.PosX1, Y1 = site.PosY1, X2 = site.PosX2, Y2 = site.PosY2, LocalityType = site.LocalityType, SiteID = siteID });
                if (_siteCache.Count > MAX_CACHED_ROWS) {
                    // remove the oldest...
                    _siteCache.RemoveAt(0);
                }
                return siteID;
            }
        }
示例#3
0
 public int ImportSite(Site site)
 {
     return StoredProcReturnVal("spSiteImportGetID",
         _P("vchrSiteName", site.SiteName),
         _P("intPoliticalRegionID", site.PoliticalRegionID),
         _P("tintLocalType", site.LocalityType),
         _P("vchrLocal", site.Locality),
         _P("vchrDistanceFromPlace", site.DistanceFromPlace),
         _P("vchrDirFromPlace", site.DirFromPlace),
         _P("vchrInformalLocal", site.InformalLocal),
         _P("tintPosCoordinates", site.PosCoordinates),
         _P("tintPosAreaType", site.PosAreaType),
         _P("fltPosX1", site.PosX1),
         _P("fltPosY1", site.PosY1),
         _P("fltPosX2", site.PosX2),
         _P("fltPosY2", site.PosY2),
         _P("tintPosXYDisplayFormat", site.PosXYDisplayFormat),
         _P("vchrPosSource", site.PosSource),
         _P("vchrPosError", site.PosError),
         _P("vchrPosWho", site.PosWho),
         _P("vchrPosDate", site.PosDate),
         _P("vchrPosOriginal", site.PosOriginal),
         _P("vchrPosUTMSource", site.PosUTMSource),
         _P("vchrPosUTMMapProj", site.PosUTMMapProj),
         _P("vchrPosUTMMapName", site.PosUTMMapName),
         _P("vchrPosUTMMapVer", site.PosUTMMapVer),
         _P("tintElevType", site.ElevType),
         _P("fltElevUpper", site.ElevUpper),
         _P("fltElevLower", site.ElevLower),
         _P("fltElevDepth", site.ElevDepth),
         _P("vchrElevUnits", site.ElevUnits),
         _P("vchrElevSource", site.ElevSource),
         _P("vchrElevError", site.ElevError),
         _P("vchrGeoEra", site.GeoEra),
         _P("vchrGeoState", site.GeoState),
         _P("vchrGeoPlate", site.GeoPlate),
         _P("vchrGeoFormation", site.GeoFormation),
         _P("vchrGeoMember", site.GeoMember),
         _P("vchrGeoBed", site.GeoBed),
         _P("vchrGeoName", site.GeoName),
         _P("vchrGeoAgeBottom", site.GeoAgeBottom),
         _P("vchrGeoAgeTop", site.GeoAgeTop),
         _P("vchrGeoNotes", site.GeoNotes)
     );
 }