Пример #1
0
        public void XmlOsmWriterWritesFilesCompatibleWithOsmosis()
        {
            string xmlFile = Path.GetFullPath("TestFiles\\xmlwriter-osmosis-compatibility-test-xmlwriter-real-file.osm");

            if (File.Exists(xmlFile))
            {
                File.Delete(xmlFile);
            }

            using (OsmXmlWriter writer = new OsmXmlWriter(xmlFile, new OsmWriterSettings()
            {
                WriteMetadata = true
            })) {
                foreach (var entityInfo in this.GetTestData())
                {
                    writer.Write(entityInfo);
                }
            }

            string osmosisXmlFile = Path.GetFullPath("TestFiles\\xmlwriter-osmosis-compatibility-test-test-file.osm");

            if (File.Exists(osmosisXmlFile))
            {
                File.Delete(osmosisXmlFile);
            }

            string osmosisArguments = string.Format("--read-xml file={0} --write-xml file={1}", xmlFile, osmosisXmlFile);

            this.CallOsmosis(osmosisArguments);

            Assert.True(File.Exists(osmosisXmlFile));
            Assert.True(new FileInfo(osmosisXmlFile).Length > 0);
        }
Пример #2
0
        public void Constructor_PathSettings_SetsSettingsAndMakesThemReadOnly()
        {
            string            path     = "TestFiles\\xmlwriter-constructor-test.osm";
            OsmWriterSettings settings = new OsmWriterSettings();

            using (OsmXmlWriter target = new OsmXmlWriter(path, settings)) {
                Assert.Same(settings, target.Settings);
                Assert.True(target.Settings.IsReadOnly);
            }
        }
Пример #3
0
        public void Constructor_StreamSettings_SetsSettingsAndMakesThemReadOnly()
        {
            MemoryStream      stream   = new MemoryStream();
            OsmWriterSettings settings = new OsmWriterSettings();

            using (OsmXmlWriter target = new OsmXmlWriter(stream, settings)) {
                Assert.Same(settings, target.Settings);
                Assert.True(target.Settings.IsReadOnly);
            }
        }
Пример #4
0
        public void Dispose_ClosesOutputStreamIfWritingToStream()
        {
            MemoryStream stream = new MemoryStream();

            OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings());

            target.Dispose();

            Assert.False(stream.CanRead);
        }
Пример #5
0
        public void Write_ThrowsArgumentExceptionIfWriteMetadataIsTrueButEntityDoesntHaveMetadata()
        {
            MemoryStream stream = new MemoryStream();

            using (OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings()
            {
                WriteMetadata = true
            })) {
                Assert.Throws <ArgumentException>(() => target.Write(_node));
            }
        }
Пример #6
0
 static void TestXmlWriterSpeedWithoutMetadata()
 {
     using (OsmXmlWriter writer = new OsmXmlWriter("TestFiles\\temp.osm", new OsmWriterSettings()
     {
         WriteMetadata = false
     })) {
         foreach (var entity in _entities)
         {
             writer.Write(entity);
         }
     }
 }
Пример #7
0
        public void Constructor_PathSettings_CreatesOutputFile()
        {
            string filename = PathHelper.GetTempFilePath("osmwriter-constructor-creates-output-test.pbf");

            OsmWriterSettings settings = new OsmWriterSettings();

            using (OsmXmlWriter target = new OsmXmlWriter(filename, settings)) {
                ;
            }

            Assert.True(File.Exists(filename));
        }
Пример #8
0
        public void Write_IOsmGeometry_ThrowsExceptionIfEntityIsNull()
        {
            MemoryStream stream = new MemoryStream();

            using (OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings()
            {
                WriteMetadata = false
            })) {
                IOsmGeometry entity = null;
                Assert.Throws <ArgumentNullException>(() => target.Write(entity));
            }
        }
Пример #9
0
        public void Write_DoesNotThrowsExceptionIfMetadataContainsNullInsteadUsername()
        {
            MemoryStream stream = new MemoryStream();

            _nodeProperties.Metadata.User = null;

            using (OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings()
            {
                WriteMetadata = true
            })) {
                target.Write(_nodeProperties);
            }
        }
Пример #10
0
        public void Write_IEntityInfo_WritesRelationWithTags()
        {
            MemoryStream stream = new MemoryStream();

            using (OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings()
            {
                WriteMetadata = false
            })) {
                target.Write(_relationTags);
            }

            this.TestXmlOutput(stream, _relationTags, false);
        }
Пример #11
0
        public void Write_IEntityInfo_WritesRelationWithMetadata()
        {
            MemoryStream stream = new MemoryStream();

            using (OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings()
            {
                WriteMetadata = true
            })) {
                target.Write(_relationNodeProperties);
            }

            this.TestXmlOutput(stream, _relationNodeProperties, true);
        }
Пример #12
0
        public void Write_IEntityInfo_WritesWay()
        {
            MemoryStream stream = new MemoryStream();

            using (OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings()
            {
                WriteMetadata = false
            })) {
                target.Write(_way);
            }

            this.TestXmlOutput(stream, _way, false);
        }
Пример #13
0
        public void Dispose_ClosesOutputStreamIfWritingToFiles()
        {
            string path = PathHelper.GetTempFilePath("xmlwriter-closes-output-filestream-test.osm");

            OsmXmlWriter target = new OsmXmlWriter(path, new OsmWriterSettings());

            target.Dispose();

            FileStream testStream = null;

            testStream = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);
            testStream.Dispose();
        }
Пример #14
0
        public void Constructor_PathSettings_CreatesOutputFile()
        {
            string filename = "TestFiles\\osmwriter-constructor-creates-output-test.pbf";

            File.Delete(filename);

            OsmWriterSettings settings = new OsmWriterSettings();

            using (OsmXmlWriter target = new OsmXmlWriter(filename, settings)) {
                ;
            }

            Assert.True(File.Exists(filename));
        }
Пример #15
0
        public void Write_IOsmGeometry_WritesRelation()
        {
            Relation relation = new Relation(100, new RelationMember[] { new RelationMember(new Node(1), "test-role") });

            MemoryStream stream = new MemoryStream();

            using (OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings()
            {
                WriteMetadata = false
            })) {
                target.Write(relation);
            }

            this.TestXmlOutput(stream, new RelationInfo(relation), false);
        }
Пример #16
0
        public void Write_IOsmGeometry_WritesWay()
        {
            Way way = new Way(10, new Node[] { new Node(1), new Node(2), new Node(3) });

            MemoryStream stream = new MemoryStream();

            using (OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings()
            {
                WriteMetadata = false
            })) {
                target.Write(way);
            }

            this.TestXmlOutput(stream, new WayInfo(way), false);
        }
Пример #17
0
        public void Write_IOsmGeometry_WritesNode()
        {
            Node node = new Node(1, 11.1, 12.1);

            MemoryStream stream = new MemoryStream();

            using (OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings()
            {
                WriteMetadata = false
            })) {
                target.Write(node);
            }

            this.TestXmlOutput(stream, new NodeInfo(node), false);
        }
Пример #18
0
        public void Dispose_ClosesOutputStreamIfWritingToFiles()
        {
            string path = "TestFiles\\xmlwriter-closes-output-filestream-test.osm";

            File.Delete(path);

            OsmXmlWriter target = new OsmXmlWriter(path, new OsmWriterSettings());

            target.Dispose();

            FileStream testStream = null;

            Assert.DoesNotThrow(() => testStream = new FileStream(path, FileMode.Open, FileAccess.ReadWrite));
            testStream.Dispose();
        }
Пример #19
0
        private void SaveOsmFile(IOsmDataFastAccess osmDatabase)
        {
            if (false == Directory.Exists(parameters.OutputDir))
            {
                Directory.CreateDirectory(parameters.OutputDir);
            }

            string osmFileName = Path.Combine(
                parameters.OutputDir,
                string.Format(
                    CultureInfo.InvariantCulture,
                    parameters.OutputFileFormat,
                    ++osmFilesCounter));

            OsmXmlWriter writer = new OsmXmlWriter();

            writer.Settings.GeneratorName = "GroundTruth";
            writer.Write(osmFileName, fileSystem, osmDatabase);
        }
Пример #20
0
        public void Write_IEntityInfo_DoesntWriteRelationMetadataIfWriteMedataIsFalse()
        {
            MemoryStream stream = new MemoryStream();

            using (OsmXmlWriter target = new OsmXmlWriter(stream, new OsmWriterSettings()
            {
                WriteMetadata = false
            })) {
                target.Write(_relationNodeProperties);
            }

            stream = new MemoryStream(stream.ToArray());

            using (TextReader reader = new StreamReader(stream)) {
                string line = null;
                while ((line = reader.ReadLine()) != null)
                {
                    Assert.DoesNotContain("timestamp", line);
                }
            }
        }
Пример #21
0
        public void StartCutting()
        {
            Log = string.Empty;

            if (string.IsNullOrWhiteSpace(InputFileName))
            {
                Log += $"Input file can't be empty { Environment.NewLine}";
                return;
            }
            if (string.IsNullOrWhiteSpace(OutputFileName))
            {
                Log += $"Output file name can't be empty { Environment.NewLine}";
                return;
            }

            Log += $"Loading osm data form input file{ Environment.NewLine}";
            OsmData osmData = null;

            try
            {
                osmData = OsmParser.Parse(InputFileName, _minLon, _minLat, _maxLon, _maxLat);
            }
            catch (FileNotFoundException e)
            {
                Log += $"input file not found { Environment.NewLine}";
                return;
            }

            osmData.FillWaysNode();
            osmData.RemoveRelationsWithoutMembers();
            osmData.RemoveWaysWithoutNodes();

            Log += $"Writing osm data to output file{Environment.NewLine}{AppDomain.CurrentDomain.BaseDirectory}{OSMtoSharp.FileManagers.Constants.Constants.FileFolder}{Path.DirectorySeparatorChar}{OutputFileName}{ Environment.NewLine}";
            if (OsmXmlWriter.WriteOsmDataToXml(osmData, OutputFileName, _minLon, _minLat, _maxLon, _maxLat))
            {
                Log += $"Done! { Environment.NewLine}";
            }
        }