public static CompleteWay[] Generate(string from, string to, NetTopologySuite.Geometries.Geometry scope = null) { var osm = FileSerializer.ReadXmlCacheOrSource(to, () => TranslateAndDisolve(from, scope)); JOSM.MarkAsNeverUpload(to); return(osm.GetElements().ToComplete().OfType <CompleteWay>().ToArray()); }
private static void Go(string scopeName, long relationId) { if (!Directory.Exists(scopeName)) { Directory.CreateDirectory(scopeName); } //NetTopologySuite.Algorithm.Match.HausdorffSimilarityMeasure //Geometry.DistanceMeters( // new NetTopologySuite.Geometries.Coordinate(scope.MinLongitude.Value, scope.MinLatitude.Value), // new NetTopologySuite.Geometries.Coordinate(scope.MaxLongitude.Value, scope.MaxLatitude.Value)); var scope = scopeName == null ? null : LoadBounds(scopeName, relationId); var reference = Reference.Generate("ReferenceRawSimplified.osm", $"{scopeName}\\Reference.osm", scope); Osm subject; using (var stream = File.OpenRead("Subject.pbf")) { subject = new PBFOsmStreamSource(stream).AsOsm(); } var missingPublic = Conflate.FindMissingRoads(subject, reference.Where(w => !w.Tags.Contains("ownership", "private")).ToArray()); FileSerializer.WriteXml($"{scopeName}\\MissingPublic.osm", missingPublic); JOSM.MarkAsNeverUpload($"{scopeName}\\MissingPublic.osm"); var missingPrivate = Conflate.FindMissingRoads(subject, reference.Where(w => w.Tags.Contains("ownership", "private")).ToArray()); FileSerializer.WriteXml($"{scopeName}\\MissingPrivate.osm", missingPrivate); JOSM.MarkAsNeverUpload($"{scopeName}\\MissingPrivate.osm"); //int i = 0; //var referenceSlices = BoundsExtentions.SliceRecusive(reference, 200); //foreach (var referenceSlice in referenceSlices) //{ // var directory = i.ToString("0000"); // Directory.CreateDirectory(directory); // FileSerializer.WriteXml($"{directory}\\Reference.osm", referenceSlice.Value.AsOsm()); // JOSM.MarkAsNeverUpload($"{directory}\\Reference.osm"); // //var subjectSlice = subject.FilterBox(bounds.MinLongitude.Value, bounds.MaxLatitude.Value, // // bounds.MaxLongitude.Value, bounds.MinLatitude.Value, true) // // .AsOsm(); // //FileSerializer.WriteXml($"{i}\\Subject.osm", subjectSlice); // //var missing = Conflate.FindMissingPublicRoads(subjectSlice, referenceSlice); // //FileSerializer.WriteXml($"{i}\\MissingPublicRoads.osm", missing); // //var session = File.ReadAllText("Session.jos"); // // Transform session // //File.WriteAllText($"{i}\\Session.jos", session); // i++; //} }