private stream CreateStream(StreamRoute route, string stateName, int stateidd) { var name = route.kittle_nam ?? "Unnamed Stream"; Console.WriteLine("Adding stream " + name + " | " + route.kittle_nbr); var stream = new stream(); var centroid = route.Geometry_4326.Centroid; stream.centroid_latitude = Convert.ToDecimal(centroid.X); stream.centroid_longitude = Convert.ToDecimal(centroid.Y); stream.has_brook_trout = true; stream.has_brown_trout = true; stream.has_rainbow_trout = true; stream.is_brook_trout_stocked = true; stream.is_brown_trout_stocked = true; stream.is_rainbow_trout_stocked = true; stream.length_mi = Convert.ToDecimal(route.OriginalGeometry.Length) / METERS_IN_MILE; // fix later. stream.local_name = route.kittle_nam; stream.slug = Guid.NewGuid().ToString(); stream.source_id = route.gid.ToString(); stream.source = route.kittle_nbr; stream.state_gid = stateidd; stream.state = stateName; stream.Geom = route.Geom_4326; stream.name = route.kittle_nam ?? "Unnamed Stream"; stream.status_mes = "Flood"; // stream.trout_stream_sections = trout_stream_sectionIds.SelectMany(section => CreateSection(section, route)).ToList(); return(stream); }
private IEnumerable <trout_stream_section> CreateSection(trout_streams_minnesota asdf, StreamRoute route) { var routeMultilineString = route.OriginalGeometry as IMultiLineString; var troutStreamSection = (asdf.OriginalGeometry as IMultiLineString); var desiredTroutStreamSection = (asdf.Geometry_4326 as IMultiLineString); var TroutStreamSection4236 = (asdf.Geometry_4326 as IMultiLineString); var numberOfGeometries = troutStreamSection.Geometries.Count(); for (var i = 0; i < numberOfGeometries; i++) { var s = troutStreamSection.Geometries[i] as ILineString; var desiredGeometry = desiredTroutStreamSection.Geometries[i] as ILineString; desiredGeometry.SRID = 44326; var asdf4236 = TroutStreamSection4236.Geometries[i]; var trout_section = new trout_stream_section(); var centroid = asdf4236.Centroid; trout_section.centroid_latitude = Convert.ToDecimal(centroid.X); trout_section.centroid_longitude = Convert.ToDecimal(centroid.Y); trout_section.length_mi = Convert.ToDecimal(s.Length) / METERS_IN_MILE; trout_section.public_length = 0; trout_section.section_name = asdf.kittle_nam ?? "Unnamed Stream"; trout_section.source_id = asdf.kittle_nbr; var multilineString = new MultiLineString(new[] { s }); var t = new LinearReference(); var wktWriter = new WKTWriter(); wktWriter.EmitSRID = true; wktWriter.HandleSRID = true; var desiredMultilineString = new MultiLineString(new[] { desiredGeometry }); desiredMultilineString.SRID = 4326; var text = wktWriter.Write(desiredMultilineString); // var superResultLol = var writer = new WKBWriter(); // writer.HandleSRID = true; // writer.EmitSRID = true; var binResult = writer.Write(desiredMultilineString); var bin2 = desiredMultilineString.ToBinary(); var stringResult = System.Text.Encoding.UTF7.GetString(binResult); trout_section.Geom = asdf.Geom_4326; var result = t.GetIntersectionOfLine(routeMultilineString.Geometries.First() as ILineString, s).ToList(); trout_section.start = (decimal)result[0] / METERS_IN_MILE; trout_section.stop = (decimal)result[1] / METERS_IN_MILE; yield return(trout_section); } }
public void CreateStreamSections(StreamRoute route, IEnumerable <trout_streams_minnesota> trout_stream_sectionIds, stream stream) { stream.trout_stream_sections = trout_stream_sectionIds.SelectMany(section => CreateSection(section, route)).ToList(); }
private IEnumerable <trout_stream_section> CreateSection(trout_streams_minnesota asdf, StreamRoute route) { var routeMultilineString = route.OriginalGeometry as IMultiLineString; var troutStreamSection = (asdf.OriginalGeometry as IMultiLineString); var desiredTroutStreamSection = (asdf.Geometry_4326 as IMultiLineString); var TroutStreamSection4236 = (asdf.Geometry_4326 as IMultiLineString); var numberOfGeometries = troutStreamSection.Geometries.Count(); for (var i = 0; i < numberOfGeometries; i++) { var s = troutStreamSection.Geometries[i] as ILineString; var desiredGeometry = desiredTroutStreamSection.Geometries[i]; var asdf4236 = TroutStreamSection4236.Geometries[i]; var trout_section = new trout_stream_section(); var centroid = asdf4236.Centroid; trout_section.centroid_latitude = Convert.ToDecimal(centroid.X); trout_section.centroid_longitude = Convert.ToDecimal(centroid.Y); trout_section.length_mi = Convert.ToDecimal(s.Length) / 1609.3440M; trout_section.public_length = 0; trout_section.section_name = asdf.kittle_nam ?? "Unnamed Stream"; trout_section.source_id = asdf.kittle_nbr; var multilineString = new MultiLineString(new[] { s }); var t = new LinearReference(); var text = desiredGeometry.AsText(); var bin = multilineString.AsBinary(); trout_section.Geom = text;//asdf.Geom_3857; var result = t.GetIntersectionOfLine(routeMultilineString.Geometries.First() as ILineString, s).ToList(); trout_section.start = (decimal)result[0]; trout_section.stop = (decimal)result[1]; yield return(trout_section); } }