public IActionResult Posting(TransformOperationParam json)
        {
            var OSGeo4WShell = Configuration["ScriptRunners:OSGeo4WPath"];
            // Creating temp directory to store ogr2ogr output
            string tempDirectory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            Directory.CreateDirectory(tempDirectory);
            string       tempDirectoryFile = Path.Combine(tempDirectory, Path.ChangeExtension(Path.GetRandomFileName(), json.SingleFileFormat));
            ResultObject output;

            // file disposes after block
            using (TempFileCollection files = new TempFileCollection())
            {
                string file = files.AddExtension("geojson");
                System.IO.File.WriteAllText(file, json.InputLayer.ToString());
                string cmdInput = _creator.buildOgr2Ogr(json, "ogr2ogr", tempDirectoryFile, file);
                output = _python.RunCMD(cmdInput, OSGeo4WShell);
            }
            var result = _outputHandler.HandleGdalOutput(output, tempDirectory);
            // Deleting source
            DirectoryInfo directory = new DirectoryInfo(tempDirectory);

            directory.Delete(true);

            return(result);
        }
        public void Test_Validate_method(string type, int expectedResultCount)
        {
            Random random = new Random();

            CheckPropertyValidation checkPropertyValidation = new CheckPropertyValidation();

            Mock <IValidationFunctions> mockValidationFunctions = new Mock <IValidationFunctions>();

            mockValidationFunctions.Setup(x => x.IsValidGeoJson(It.IsAny <string>())).Returns(true);

            TransformOperationParam transformOperationParam = new TransformOperationParam()
            {
                InputLayer = "InputLayer" + random.Next(1000), Type = type, SourceCrs = "sourceCrs" + random.Next(1000), TargetCrs = "" + random.Next(1000)
            };

            IList <ValidationResult> result = checkPropertyValidation.myValidation(transformOperationParam, mockValidationFunctions);

            Assert.AreEqual(expectedResultCount, result.Count);
        }
예제 #3
0
        public string buildOgr2Ogr(TransformOperationParam json, string program, string dst_data, string src_data)
        {
            ICommandBuilder builder = createNewCommandBuilder();

            builder.AddProgramName(program);
            builder.AdditionalArguments("-f", json.Type);
            if (json.SourceCrs != null && json.TargetCrs != null)
            {
                builder.AdditionalArguments("-s_srs", json.SourceCrs);
                builder.AdditionalArguments("-t_srs", json.TargetCrs);
            }
            else if (json.TargetCrs != null)
            {
                builder.AdditionalArguments("-t_srs", json.TargetCrs);
            }
            if (json.SkipFailures != null)
            {
                builder.SignleParameter(json.SkipFailures);
            }
            builder.AddDataSource(dst_data, src_data);

            return(builder.GetResult());
        }