public static LayerGeoJson GetTransectLineLayerGeoJson(this OnlandVisualTrashAssessment onlandVisualTrashAssessment)
        {
            LayerGeoJson transsectLineLayerGeoJson;

            if (onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea?.TransectLine != null)
            {
                transsectLineLayerGeoJson = onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea
                                            .GetTransectLineLayerGeoJson();
            }
            else
            {
                var featureCollection = new FeatureCollection();
                var dbGeometry        = onlandVisualTrashAssessment.GetTransect();
                if (dbGeometry == null)
                {
                    return(null);
                }

                var feature = DbGeometryToGeoJsonHelper.FromDbGeometryWithReprojectionCheck(dbGeometry.ToSqlGeometry().MakeValid().ToDbGeometry());
                featureCollection.Features.AddRange(new List <Feature> {
                    feature
                });

                transsectLineLayerGeoJson = new LayerGeoJson("transectLine", featureCollection, "#000000",
                                                             1,
                                                             LayerInitialVisibility.Show);
            }

            return(transsectLineLayerGeoJson);
        }
        /// <summary>
        /// Creates a LayerGeoJson with features for each TreatmentBMP in treatmentBMPs.
        /// The FeatureCollection of the resultant LayerGeoJson will have some common properties,
        /// which can be extended with the onEachFeature parameter.
        /// </summary>
        /// <param name="treatmentBMPs"></param>
        /// <param name="onEachFeature"></param>
        /// <param name="enablePopups"></param>
        /// <returns></returns>
        public static LayerGeoJson MakeTreatmentBMPLayerGeoJson(IEnumerable <TreatmentBMP> treatmentBMPs, Action <Feature, TreatmentBMP> onEachFeature, bool enablePopups)
        {
            var featureCollection        = treatmentBMPs.ToGeoJsonFeatureCollectionGeneric(onEachFeature);
            var treatmentBMPLayerGeoJson = new LayerGeoJson("Treatment BMPs", featureCollection, "blue", 1, LayerInitialVisibility.Show)
            {
                EnablePopups = enablePopups
            };

            return(treatmentBMPLayerGeoJson);
        }
        public static LayerGeoJson MakeDelineationLayerGeoJson(IEnumerable <Delineation> delineation)
        {
            var featureCollection = delineation.ToGeoJsonFeatureCollection();

            var catchmentLayerGeoJson = new LayerGeoJson("Delineation", featureCollection, "blue", 1, LayerInitialVisibility.Show)
            {
                EnablePopups = false
            };

            return(catchmentLayerGeoJson);
        }
        public static LayerGeoJson MakeTreatmentBMPDelineationLayerGeoJson(TreatmentBMP treatmentBMP)
        {
            Check.Require(treatmentBMP.Delineation?.DelineationGeometry != null, "Tried to build delineation layer when delineation was null");
            var featureCollection = new FeatureCollection();
            var feature           = DbGeometryToGeoJsonHelper.FromDbGeometryWithNoReproject(treatmentBMP.Delineation?.DelineationGeometry4326);

            featureCollection.Features.Add(feature);

            var treatmentBMPLayerGeoJson = new LayerGeoJson("Delineation", featureCollection, "blue", 1, LayerInitialVisibility.Show)
            {
                EnablePopups = false
            };

            return(treatmentBMPLayerGeoJson);
        }
        public static LayerGeoJson GetAssessmentAreaLayerGeoJson(this OnlandVisualTrashAssessment onlandVisualTrashAssessment, bool reduce)
        {
            FeatureCollection geoJsonFeatureCollection;

            if (onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea != null)
            {
                geoJsonFeatureCollection =
                    new List <OnlandVisualTrashAssessmentArea> {
                    onlandVisualTrashAssessment.OnlandVisualTrashAssessmentArea
                }
                .ToGeoJsonFeatureCollection();
            }
            else if (onlandVisualTrashAssessment.DraftGeometry != null)
            {
                var draftGeometry = onlandVisualTrashAssessment.DraftGeometry;
                geoJsonFeatureCollection = new FeatureCollection();

                // Leaflet.Draw does not support multipolgyon editing because its dev team decided it wasn't necessary.
                // Unless https://github.com/Leaflet/Leaflet.draw/issues/268 is resolved, we have to break into separate polys.
                // On an unrelated note, DbGeometry.ElementAt is 1-indexed instead of 0-indexed, which is terrible.
                for (var i = 1; i <= draftGeometry.ElementCount.GetValueOrDefault(); i++)
                {
                    var dbGeometry = draftGeometry.ElementAt(i);
                    if (reduce)
                    {
                        // Reduce is SQL Server's implementation of the Douglas–Peucker downsampling algorithm
                        dbGeometry = dbGeometry.ToSqlGeometry().Reduce(.0000025).ToDbGeometry().FixSrid(CoordinateSystemHelper.NAD_83_HARN_CA_ZONE_VI_SRID);
                    }
                    var feature = DbGeometryToGeoJsonHelper.FromDbGeometryWithReprojectionCheck(dbGeometry);
                    geoJsonFeatureCollection.Features.Add(feature);
                }
            }
            else
            {
                geoJsonFeatureCollection = new FeatureCollection();
            }

            var assessmentAreaLayerGeoJson = new LayerGeoJson("parcels", geoJsonFeatureCollection,
                                                              "#ffff00", .5m,
                                                              LayerInitialVisibility.Show);

            return(assessmentAreaLayerGeoJson);
        }
 public StormwaterSearchMapInitJson(string mapDivID, int zoomLevel, List <LayerGeoJson> layers, BoundingBox boundingBox, LayerGeoJson searchableLayerGeoJson)
     : base(mapDivID, zoomLevel, layers, boundingBox)
 {
     SearchableLayerGeoJson = searchableLayerGeoJson;
 }
 public StormwaterSearchMapInitJson(string mapDivID, LayerGeoJson searchableLayerGeoJson)
     : base(mapDivID, DefaultZoomLevel, MapInitJsonHelpers.GetJurisdictionMapLayers().ToList(), BoundingBox.MakeNewDefaultBoundingBox())
 {
     SearchableLayerGeoJson = searchableLayerGeoJson;
 }