public void TestCoordinatesPdok() { Config.activeConfiguration = new ConfigurationFile(); Config.activeConfiguration.sewerageApiType = Amsterdam3D.Sewerage.SewerageApiType.Pdok; SewerageLayer seweragelayer = new SewerageLayer(); GeoJSON geojson = new GeoJSON(testStringPdok); geojson.GotoNextFeature(); var geom1 = geojson.getGeometryLineString(); Assert.AreEqual(4, geom1.Count); Assert.AreEqual(geom1[0], 132803.42, 0.1); Assert.AreEqual(geom1[1], 457145.83, 0.1); Assert.AreEqual(geom1[2], 132798.02, 0.1); Assert.AreEqual(geom1[3], 457153.57, 0.1); geojson.GotoNextFeature(); var geom2 = geojson.getGeometryLineString(); Assert.AreEqual(4, geom2.Count); Assert.AreEqual(geom2[0], 132652.29, 0.1); Assert.AreEqual(geom2[1], 457103.23, 0.1); Assert.AreEqual(geom2[2], 132655.03, 0.1); Assert.AreEqual(geom2[3], 457110.39, 0.1); }
public void TestCoordinatesAmsterdam() { Config.activeConfiguration = new ConfigurationFile(); Config.activeConfiguration.sewerageApiType = Amsterdam3D.Sewerage.SewerageApiType.Amsterdam; SewerageLayer seweragelayer = new SewerageLayer(); GeoJSON geojson = new GeoJSON(testStringAmsterdam); geojson.GotoNextFeature(); var geom1 = geojson.getGeometryLineString(); Assert.AreEqual(4, geom1.Count); Assert.AreEqual(geom1[0], 4.90698478562009, 0.000001); Assert.AreEqual(geom1[1], 52.3429529014738, 0.000001); Assert.AreEqual(geom1[2], 4.90702608778446, 0.000001); Assert.AreEqual(geom1[3], 52.3428382055533, 0.000001); geojson.GotoNextFeature(); var geom2 = geojson.getGeometryLineString(); Assert.AreEqual(4, geom2.Count); Assert.AreEqual(geom2[0], 4.90698478562009, 0.000001); Assert.AreEqual(geom2[1], 52.3429529014738, 0.000001); Assert.AreEqual(geom2[2], 4.90665251262403, 0.000001); Assert.AreEqual(geom2[3], 52.3429023897671, 0.000001); }
// [Test] public void TestFilePdok() { Config.activeConfiguration = new ConfigurationFile(); Config.activeConfiguration.sewerageApiType = Amsterdam3D.Sewerage.SewerageApiType.Pdok; SewerageLayer seweragelayer = new SewerageLayer(); //var jsontext = System.IO.File.ReadAllText(@"F:\Data\sewerage\data_utrecht_leidingen.json"); //var jsontext = System.IO.File.ReadAllText(@"F:\Data\sewerage\data_utrecht_leidingen_128000_456000_129000_457000.json"); var jsontext = System.IO.File.ReadAllText(@"F:\Data\sewerage\data_utrecht_leidingen_count_error.json"); GeoJSON geojson = new GeoJSON(jsontext); while (geojson.GotoNextFeature()) { double diameter = geojson.getPropertyFloatValue(seweragelayer.DiameterString); double bobBeginPunt = geojson.getPropertyFloatValue(seweragelayer.BobBeginPuntString); double bobEindPunt = geojson.getPropertyFloatValue(seweragelayer.BobEindPuntString); var geom = geojson.getGeometryLineString(); Assert.AreEqual(4, geom.Count); // Debug.Log($"diameter:{diameter} bobBeginPunt:{bobBeginPunt} bobEindPunt:{bobEindPunt}"); } }
IEnumerator GetSewerLinesInBoundingBox(TileChange tileChange, Tile tile, Vector3RD boundingBoxMinimum, Vector3RD boundingBoxMaximum, System.Action <TileChange> callback = null) { yield return(null); yield return(new WaitUntil(() => activeCount < maxSimultaneous)); activeCount++; tile.gameObject.SetActive(true); string escapedUrl = sewerPipesWfsUrl; escapedUrl += UnityWebRequest.EscapeURL((boundingBoxMinimum.x).ToString(CultureInfo.InvariantCulture) + "," + (boundingBoxMinimum.y).ToString(CultureInfo.InvariantCulture) + "," + (boundingBoxMaximum.x).ToString(CultureInfo.InvariantCulture) + "," + (boundingBoxMaximum.y).ToString(CultureInfo.InvariantCulture)); var sewerageRequest = UnityWebRequest.Get(escapedUrl); yield return(sewerageRequest.SendWebRequest()); if (!sewerageRequest.isNetworkError && !sewerageRequest.isHttpError) { GeoJSON customJsonHandler = new GeoJSON(sewerageRequest.downloadHandler.text); yield return(null); Vector3 startpoint; Vector3 endpoint; int parseCounter = 0; while (customJsonHandler.GotoNextFeature()) { parseCounter++; if ((parseCounter % maxParsesPerFrame) == 0) { yield return(null); } double diameter = customJsonHandler.getPropertyFloatValue("diameter"); double bobBeginPunt = customJsonHandler.getPropertyFloatValue("bob_beginpunt"); List <double> coordinates = customJsonHandler.getGeometryLineString(); endpoint = ConvertCoordinates.CoordConvert.WGS84toUnity(new Vector3WGS(coordinates[0], coordinates[1], bobBeginPunt + Config.activeConfiguration.zeroGroundLevelY)); for (int i = 2; i < coordinates.Count; i += 2) { startpoint = endpoint; double bobEindPunt = customJsonHandler.getPropertyFloatValue("bob_eindpunt"); endpoint = ConvertCoordinates.CoordConvert.WGS84toUnity(new Vector3WGS(coordinates[i], coordinates[(i + 1)], bobEindPunt + Config.activeConfiguration.zeroGroundLevelY)); sewerPipeSpawner.CreateSewerLine(startpoint, endpoint, diameter, tile.gameObject); } } StartCoroutine(GetSewerManholesInBoundingBox(tileChange, boundingBoxMinimum, boundingBoxMaximum, tile, callback)); } else { //callback if weberror Debug.Log("sewerlinedata not found"); activeCount--; callback(tileChange); } yield return(null); }
public void TestCoordinatesMultipleSegmentsPdok() { Config.activeConfiguration = new ConfigurationFile(); Config.activeConfiguration.sewerageApiType = Amsterdam3D.Sewerage.SewerageApiType.Pdok; SewerageLayer seweragelayer = new SewerageLayer(); GeoJSON geojson = new GeoJSON(testStringMultipleSegmentPdok); geojson.GotoNextFeature(); var geom1 = geojson.getGeometryLineString(); // Assert.AreEqual(4, geom1.Count); Assert.AreEqual(geom1[0], 128714.08, 0.1); Assert.AreEqual(geom1[1], 456715.91, 0.1); Assert.AreEqual(geom1[2], 128726.92, 0.1); Assert.AreEqual(geom1[3], 456784.05, 0.1); geojson.GotoNextFeature(); var geom2 = geojson.getGeometryLineString(); //Assert.AreEqual(4, geom2.Count); Assert.AreEqual(geom2[0], 129029.42, 0.1); Assert.AreEqual(geom2[1], 456653.39, 0.1); Assert.AreEqual(geom2[2], 129029.21, 0.1); Assert.AreEqual(geom2[3], 456654.99, 0.1); geojson.GotoNextFeature(); var geom3 = geojson.getGeometryLineString(); //Assert.AreEqual(4, geom2.Count); Assert.AreEqual(geom3[0], 128995.88, 0.1); Assert.AreEqual(geom3[1], 456709.91, 0.1); Assert.AreEqual(geom3[2], 128980.46, 0.1); Assert.AreEqual(geom3[3], 456704.58, 0.1); }
public void TestApiAmsterdamOne() { Config.activeConfiguration = new ConfigurationFile(); Config.activeConfiguration.sewerageApiType = Amsterdam3D.Sewerage.SewerageApiType.Amsterdam; SewerageLayer seweragelayer = new SewerageLayer(); GeoJSON geojson = new GeoJSON(testStringAmsterdamOne); geojson.GotoNextFeature(); double diameter = geojson.getPropertyFloatValue(seweragelayer.DiameterString); double bobBeginPunt = geojson.getPropertyFloatValue(seweragelayer.BobBeginPuntString); double bobEindPunt = geojson.getPropertyFloatValue(seweragelayer.BobEindPuntString); var geom = geojson.getGeometryLineString(); Assert.AreEqual(297, diameter); Assert.AreEqual(-1, bobBeginPunt); Assert.AreEqual(-1.60, bobEindPunt, 0.1); Assert.AreEqual(4, geom.Count); }
public void TestApiPdokOneWhile() { Config.activeConfiguration = new ConfigurationFile(); Config.activeConfiguration.sewerageApiType = Amsterdam3D.Sewerage.SewerageApiType.Pdok; SewerageLayer seweragelayer = new SewerageLayer(); GeoJSON geojson = new GeoJSON(testStringPdokOne); while (geojson.GotoNextFeature()) { double diameter = geojson.getPropertyFloatValue(seweragelayer.DiameterString); double bobBeginPunt = geojson.getPropertyFloatValue(seweragelayer.BobBeginPuntString); double bobEindPunt = geojson.getPropertyFloatValue(seweragelayer.BobEindPuntString); var geom = geojson.getGeometryLineString(); Assert.AreEqual(800, diameter); Assert.AreEqual(0.06, bobBeginPunt, 0.001); Assert.AreEqual(0.05, bobEindPunt, 0.001); Assert.AreEqual(4, geom.Count); } }
IEnumerator GetSewerLinesInBoundingBox(TileChange tileChange, Tile tile, Vector3RD boundingBoxMinimum, Vector3RD boundingBoxMaximum, System.Action <TileChange> callback = null) { yield return(new WaitForEndOfFrame()); var ownCoroutine = tile.runningCoroutine; yield return(new WaitUntil(() => CoroutineSlotsAvailable())); coroutinesWaiting[ownCoroutine] = false; string escapedUrl = Config.activeConfiguration.sewerPipesWfsUrl; escapedUrl += UnityWebRequest.EscapeURL($"{boundingBoxMinimum.x.ToInvariant()},{boundingBoxMinimum.y.ToInvariant()},{boundingBoxMaximum.x.ToInvariant()},{boundingBoxMaximum.y.ToInvariant()}"); var sewerageRequest = UnityWebRequest.Get(escapedUrl); tile.runningWebRequest = sewerageRequest; yield return(sewerageRequest.SendWebRequest()); tile.runningWebRequest = null; if (!sewerageRequest.isNetworkError && !sewerageRequest.isHttpError) { GeoJSON customJsonHandler = new GeoJSON(sewerageRequest.downloadHandler.text); yield return(null); Vector3 startpoint; Vector3 endpoint; int parseCounter = 0; while (customJsonHandler.GotoNextFeature()) { parseCounter++; if ((parseCounter % maxParsesPerFrame) == 0) { yield return(null); } double diameter = customJsonHandler.getPropertyFloatValue(DiameterString); double bobBeginPunt = customJsonHandler.getPropertyFloatValue(BobBeginPuntString); List <double> coordinates = customJsonHandler.getGeometryLineString(); endpoint = GetUnityPoint(coordinates[0], coordinates[1], bobBeginPunt + Config.activeConfiguration.zeroGroundLevelY); for (int i = 2; i < coordinates.Count; i += 2) { startpoint = endpoint; double bobEindPunt = customJsonHandler.getPropertyFloatValue(BobEindPuntString); endpoint = GetUnityPoint(coordinates[i], coordinates[(i + 1)], bobEindPunt + Config.activeConfiguration.zeroGroundLevelY); sewerPipeSpawner.CreateSewerLine(startpoint, endpoint, diameter, tile.gameObject); } } yield return(GetSewerManholesInBoundingBox(tileChange, boundingBoxMinimum, boundingBoxMaximum, tile, callback)); } else { //callback if weberror Debug.Log("sewerlinedata not found"); callback(tileChange); } if (coroutinesWaiting.ContainsKey(ownCoroutine)) { coroutinesWaiting.Remove(ownCoroutine); } yield return(null); }