Пример #1
0
        /// <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);
            }
        }
Пример #2
0
 /// <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)));
 }
Пример #3
0
 /// <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);
     }));
 }
Пример #4
0
        /// <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));
        }
Пример #5
0
 /// <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);
     }
 }
Пример #6
0
 /// <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);
     }
 }
Пример #7
0
        /// <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);
            }
        }
Пример #8
0
        /// <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));
        }
Пример #9
0
        /// <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));
        }
Пример #10
0
        /// <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);
            }
        }
Пример #11
0
        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));
        }
Пример #12
0
 private static string GetStoreKey(MapDataStorageType dataStorageType)
 {
     return(dataStorageType == MapDataStorageType.InMemory ? InMemoryStoreKey : PersistentStoreKey);
 }
Пример #13
0
 /// <inheritdoc />
 public void Configure(IConfigSection configSection)
 {
     _mapDataLibrary.Configure(configSection.GetString("data/index"));
     _mapDataStorageType = MapDataStorageType.Persistent;
 }
Пример #14
0
 /// <inheritdoc />
 public IObservable <int> Add(MapDataStorageType dataStorageType, string dataPath, Stylesheet stylesheet, Range <int> levelOfDetails)
 {
     return(_mapDataLibrary.Add(dataStorageType, dataPath, stylesheet, levelOfDetails));
 }
Пример #15
0
 /// <inheritdoc />
 public void Delete(MapDataStorageType dataStorageType, long elementId, Range <int> levelOfDetails)
 {
     throw new NotImplementedException();
 }
Пример #16
0
 /// <inheritdoc />
 public void Edit(MapDataStorageType dataStorageType, Element element, Range <int> levelOfDetails)
 {
     throw new NotImplementedException();
 }
Пример #17
0
 /// <inheritdoc />
 public void Add(MapDataStorageType type, Element element, Range <int> levelOfDetails)
 {
     _mapDataLibrary.Add(type, element, _stylesheet, levelOfDetails)
     .Wait();
 }
Пример #18
0
 /// <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));
 }