/// <summary> /// Adda elemet to data storage to specific level of details. /// Supported formats: shapefile, osm xml, osm pbf. /// </summary> /// <param name="dataStorageType"> Map data dataStorage. </param> /// <param name="stylePath"> Stylesheet path. </param> /// <param name="element"> Element to add. </param> /// <param name="levelOfDetails"> Level of detail range. </param> public static string AddElementToStore(MapDataStorageType dataStorageType, string stylePath, Element element, Range <int> levelOfDetails) { double[] coordinates = new double[element.Geometry.Length * 2]; for (int i = 0; i < element.Geometry.Length; ++i) { coordinates[i * 2] = element.Geometry[i].Latitude; coordinates[i * 2 + 1] = element.Geometry[i].Longitude; } string[] tags = new string[element.Tags.Count * 2]; var tagKeys = element.Tags.Keys.ToArray(); for (int i = 0; i < tagKeys.Length; ++i) { tags[i * 2] = tagKeys[i]; tags[i * 2 + 1] = element.Tags[tagKeys[i]]; } lock (__lockObj) { ResetLastError(); addToStoreElement(GetStoreKey(dataStorageType), stylePath, element.Id, coordinates, coordinates.Length, tags, tags.Length, levelOfDetails.Minimum, levelOfDetails.Maximum, OnErrorHandler); return(_lastError); } }
/// <inheritdoc /> public IObservable <int> Add(MapDataStorageType dataStorageType, string dataPath, Stylesheet stylesheet, QuadKey quadKey) { return(Add(dataStorageType, dataPath, stylesheet, (style, data) => CoreLibrary.HasData(quadKey) ? null : CoreLibrary.AddToStore(dataStorageType, style, data, quadKey))); }
/// <inheritdoc /> public IObservable <int> Add(MapDataStorageType dataStorageType, string dataPath, Stylesheet stylesheet, Range <int> levelOfDetails) { return(Add(dataStorageType, dataPath, stylesheet, (style, data) => { return CoreLibrary.AddToStore(dataStorageType, style, data, levelOfDetails); })); }
/// <inheritdoc /> public IObservable <int> Add(MapDataStorageType type, Element element, Stylesheet stylesheet, Range <int> levelOfDetails) { _trace.Debug(TraceCategory, "Add element to {0} storage", type.ToString()); double[] coordinates = new double[element.Geometry.Length * 2]; for (int i = 0; i < element.Geometry.Length; ++i) { coordinates[i * 2] = element.Geometry[i].Latitude; coordinates[i * 2 + 1] = element.Geometry[i].Longitude; } string[] tags = new string[element.Tags.Count * 2]; var tagKeys = element.Tags.Keys.ToArray(); for (int i = 0; i < tagKeys.Length; ++i) { tags[i * 2] = tagKeys[i]; tags[i * 2 + 1] = element.Tags[tagKeys[i]]; } var stylePath = RegisterStylesheet(stylesheet); lock (__lockObj) { addToStoreElement(GetStoreKey(type), stylePath, element.Id, coordinates, coordinates.Length, tags, tags.Length, levelOfDetails.Minimum, levelOfDetails.Maximum, OnErrorHandler); } return(Observable.Return <int>(100)); }
/// <summary> /// Adds map data to in-memory dataStorage to specific level of detail range. /// Supported formats: shapefile, osm xml, osm pbf. /// </summary> /// <param name="dataStorageType"> Map data dataStorage. </param> /// <param name="stylePath"> Stylesheet path. </param> /// <param name="path"> Path to file. </param> /// <param name="levelOfDetails"> Specifies level of details for which data should be imported. </param> public static string AddToStore(MapDataStorageType dataStorageType, string stylePath, string path, Range <int> levelOfDetails) { lock (__lockObj) { ResetLastError(); addToStoreInRange(GetStoreKey(dataStorageType), stylePath, path, levelOfDetails.Minimum, levelOfDetails.Maximum, OnErrorHandler); return(_lastError); } }
/// <summary> /// Adds map data to data storage only to specific quadkey. /// Supported formats: shapefile, osm xml, osm pbf. /// </summary> /// <param name="dataStorageType"> Map data dataStorage. </param> /// <param name="stylePath"> Stylesheet path. </param> /// <param name="path"> Path to file. </param> /// <param name="quadKey"> QuadKey. </param> public static string AddToStore(MapDataStorageType dataStorageType, string stylePath, string path, QuadKey quadKey) { lock (__lockObj) { ResetLastError(); addToStoreInQuadKey(GetStoreKey(dataStorageType), stylePath, path, quadKey.TileX, quadKey.TileY, quadKey.LevelOfDetail, OnErrorHandler); return(_lastError); } }
/// <inheritdoc /> public void Add(MapDataStorageType dataStorageType, Element element, Range <int> levelOfDetails) { var errorMsg = CoreLibrary.AddElementToStore(dataStorageType, _resolver.Resolve(_stylesheet.Path), element, levelOfDetails); if (!String.IsNullOrEmpty(errorMsg)) { throw new MapDataException(errorMsg); } }
/// <inheritdoc /> public IObservable <int> Add(MapDataStorageType type, string path, Stylesheet stylesheet, QuadKey quadKey) { var dataPath = _pathResolver.Resolve(path); var stylePath = RegisterStylesheet(stylesheet); _trace.Debug(TraceCategory, "Add data from {0} to {1} storage", dataPath, type.ToString()); lock (__lockObj) { addToStoreInQuadKey(GetStoreKey(type), stylePath, dataPath, quadKey.TileX, quadKey.TileY, quadKey.LevelOfDetail, OnErrorHandler); } return(Observable.Return <int>(100)); }
/// <inheritdoc /> public IObservable <int> Add(MapDataStorageType type, string path, Stylesheet stylesheet, Range <int> levelOfDetails) { var dataPath = _pathResolver.Resolve(path); var stylePath = _pathResolver.Resolve(stylesheet.Path); _trace.Debug(TraceCategory, "Add data from {0} to {1} storage", dataPath, type.ToString()); lock (__lockObj) { addToStoreInRange(GetStoreKey(type), stylePath, dataPath, levelOfDetails.Minimum, levelOfDetails.Maximum, OnErrorHandler); } return(Observable.Return <int>(100)); }
/// <inheritdoc /> public void Configure(IConfigSection configSection) { _mapDataLoader.Configure(configSection); var stringPath = _pathResolver.Resolve(configSection.GetString("data/index/strings")); var mapDataPath = _pathResolver.Resolve(configSection.GetString("data/index/spatial")); _mapDataStorageType = MapDataStorageType.Persistent; string errorMsg = CoreLibrary.Configure(stringPath, mapDataPath); if (!String.IsNullOrEmpty(errorMsg)) { throw new MapDataException(errorMsg); } }
private IObservable <int> Add(MapDataStorageType dataStorageType, string dataPath, Stylesheet stylesheet, Func <string, string, string> addFunc) { var dataPathResolved = _pathResolver.Resolve(dataPath); var stylePathResolved = _pathResolver.Resolve(stylesheet.Path); _trace.Info(TraceCategory, String.Format("add to {0} dataStorage: data:{1} using style: {2}", dataStorageType, dataPathResolved, stylePathResolved)); string errorMsg; lock (_lockGuard) errorMsg = addFunc(stylePathResolved, dataPathResolved); if (errorMsg != null) { return(Observable.Throw <int>(new MapDataException(errorMsg))); } return(Observable.Return(100)); }
private static string GetStoreKey(MapDataStorageType dataStorageType) { return(dataStorageType == MapDataStorageType.InMemory ? InMemoryStoreKey : PersistentStoreKey); }
/// <inheritdoc /> public void Configure(IConfigSection configSection) { _mapDataLibrary.Configure(configSection.GetString("data/index")); _mapDataStorageType = MapDataStorageType.Persistent; }
/// <inheritdoc /> public IObservable <int> Add(MapDataStorageType dataStorageType, string dataPath, Stylesheet stylesheet, Range <int> levelOfDetails) { return(_mapDataLibrary.Add(dataStorageType, dataPath, stylesheet, levelOfDetails)); }
/// <inheritdoc /> public void Delete(MapDataStorageType dataStorageType, long elementId, Range <int> levelOfDetails) { throw new NotImplementedException(); }
/// <inheritdoc /> public void Edit(MapDataStorageType dataStorageType, Element element, Range <int> levelOfDetails) { throw new NotImplementedException(); }
/// <inheritdoc /> public void Add(MapDataStorageType type, Element element, Range <int> levelOfDetails) { _mapDataLibrary.Add(type, element, _stylesheet, levelOfDetails) .Wait(); }
/// <inheritdoc /> public IObservable <int> Add(MapDataStorageType dataStorageType, string dataPath, Stylesheet stylesheet, QuadKey quadKey) { return(_mapDataLibrary.Exists(quadKey) ? Observable.Return <int>(100) : _mapDataLibrary.Add(dataStorageType, dataPath, stylesheet, quadKey)); }