public BaseTileBasedDataProcessor(MapWriterConfiguration configuration) : base() { this.boundingbox = configuration.BboxConfiguration; this.zoomIntervalConfiguration = configuration.ZoomIntervalConfiguration; this.tileGridLayouts = new TileGridLayout[this.zoomIntervalConfiguration.NumberOfZoomIntervals]; this.bboxEnlargement = configuration.BboxEnlargement; this.preferredLanguages = configuration.PreferredLanguages; this.skipInvalidRelations = configuration.SkipInvalidRelations; this.outerToInnerMapping = new TLongObjectHashMap <>(); this.innerWaysWithoutAdditionalTags = new TLongHashSet(); this.tilesToCoastlines = new Dictionary <>(); this.countWays = new float[this.zoomIntervalConfiguration.NumberOfZoomIntervals]; this.countWayTileFactor = new float[this.zoomIntervalConfiguration.NumberOfZoomIntervals]; this.histogramPoiTags = new TShortIntHashMap(); this.histogramWayTags = new TShortIntHashMap(); // compute horizontal and vertical tile coordinate offsets for all // base zoom levels for (int i = 0; i < this.zoomIntervalConfiguration.NumberOfZoomIntervals; i++) { TileCoordinate upperLeft = new TileCoordinate((int)MercatorProjection.longitudeToTileX(this.boundingbox.minLongitude, this.zoomIntervalConfiguration.getBaseZoom(i)), (int)MercatorProjection.latitudeToTileY(this.boundingbox.maxLatitude, this.zoomIntervalConfiguration.getBaseZoom(i)), this.zoomIntervalConfiguration.getBaseZoom(i)); this.tileGridLayouts[i] = new TileGridLayout(upperLeft, computeNumberOfHorizontalTiles(i), computeNumberOfVerticalTiles(i)); } }
/// <summary> /// Create a new ZoomIntervalConfiguration from the given string representation. Checks for validity. /// </summary> /// <param name="confString"> /// the string representation of a zoom interval configuration </param> /// <returns> a new zoom interval configuration </returns> public static ZoomIntervalConfiguration fromString(string confString) { string[] splitted = confString.Split(",", true); if (splitted.Length % 3 != 0) { throw new System.ArgumentException("invalid zoom interval configuration, amount of comma-separated values must be a multiple of 3"); } //JAVA TO C# CONVERTER NOTE: The following call to the 'RectangularArrays' helper class reproduces the rectangular array initialization that is automatic in Java: //ORIGINAL LINE: sbyte[][] intervals = new sbyte[splitted.Length / 3][3]; sbyte[][] intervals = RectangularArrays.ReturnRectangularSbyteArray(splitted.Length / 3, 3); for (int i = 0; i < intervals.Length; i++) { intervals[i][0] = sbyte.Parse(splitted[i * 3]); intervals[i][1] = sbyte.Parse(splitted[i * 3 + 1]); intervals[i][2] = sbyte.Parse(splitted[i * 3 + 2]); } return(ZoomIntervalConfiguration.newInstance(intervals)); }