Exemplo n.º 1
0
        private async Task <List <GlobalSearchHit> > SearchForAddresses(string searchString, int maxHits)
        {
            var query = new SearchParameters
            {
                Text           = searchString,
                QueryBy        = "roadNameHouseNumber,postDistrictCode,postDistrictName,townName",
                PerPage        = maxHits.ToString(),
                LimitHits      = maxHits.ToString(),
                QueryByWeights = "5,3,3,2"
            };

            var searchResult = await _typesenseClient.Search <OfficialAccessAddressSearchHit>("Addresses", query).ConfigureAwait(false);

            List <GlobalSearchHit> result = new();

            foreach (var hit in searchResult.Hits)
            {
                var xEtrs = Double.Parse(hit.Document.EastCoordinate, CultureInfo.InvariantCulture);
                var yEtrs = Double.Parse(hit.Document.NorthCoordinate, CultureInfo.InvariantCulture);

                var wgs84Coord = UTM32WGS84Converter.ConvertFromUTM32NToWGS84(xEtrs, yEtrs);

                var globalHit = new GlobalSearchHit(hit.Document.Id, "accessAddress", GetAddressLabel(hit.Document), wgs84Coord[0], wgs84Coord[1], xEtrs, yEtrs);

                result.Add(globalHit);
            }

            return(result);
        }
Exemplo n.º 2
0
        public void TestWgs84ConversionAlgorithm()
        {
            var result = UTM32WGS84Converter.ConvertFromUTM32NToWGS84(552000, 6190000);

            Math.Round(result[0], 2).Should().Be(9.83);
            Math.Round(result[1], 2).Should().Be(55.85);
        }
Exemplo n.º 3
0
        private async Task <List <GlobalSearchHit> > SearchForNodes(string searchString, int maxHits)
        {
            var query = new SearchParameters
            {
                Text          = searchString,
                QueryBy       = "name",
                PerPage       = maxHits.ToString(),
                LimitHits     = maxHits.ToString(),
                NumberOfTypos = "0"
            };

            var searchResult = await _typesenseClient.Search <RouteNodeSearchHit>("RouteNodes", query).ConfigureAwait(false);

            RouteNetworkElementIdList routeNodeIds = new();

            foreach (var hit in searchResult.Hits)
            {
                routeNodeIds.Add(hit.Document.Id);
            }

            var routeNodeQueryResult = await _queryDispatcher.HandleAsync <GetRouteNetworkDetails, Result <GetRouteNetworkDetailsResult> >(
                new GetRouteNetworkDetails(routeNodeIds)
            {
                RouteNetworkElementFilter = new RouteNetworkElementFilterOptions()
                {
                    IncludeCoordinates = true
                }
            }
                ).ConfigureAwait(false);

            List <GlobalSearchHit> result = new();

            if (routeNodeQueryResult.IsSuccess)
            {
                foreach (var hit in searchResult.Hits)
                {
                    var etrsCoord  = ConvertPointGeojsonToCoordArray(routeNodeQueryResult.Value.RouteNetworkElements[hit.Document.Id].Coordinates);
                    var wgs84Coord = UTM32WGS84Converter.ConvertFromUTM32NToWGS84(etrsCoord[0], etrsCoord[1]);

                    var globalHit = new GlobalSearchHit(hit.Document.Id, "routeNode", hit.Document.Name, wgs84Coord[0], wgs84Coord[1], etrsCoord[0], etrsCoord[1]);
                    result.Add(globalHit);
                }
            }

            return(result);
        }
        public static AccessAddressData MapAccessAddress(Guid accessAddressId, GetAddressInfoResult addressQueryResult)
        {
            var searchAccessAddress = addressQueryResult.AccessAddresses[accessAddressId];

            var wgs84Coord = UTM32WGS84Converter.ConvertFromUTM32NToWGS84(searchAccessAddress.AddressPoint.X, searchAccessAddress.AddressPoint.Y);

            List <UnitAddress> unitAddresses = new();

            foreach (var unitAddress in addressQueryResult.UnitAddresses)
            {
                if (unitAddress.AccessAddressId == searchAccessAddress.Id)
                {
                    unitAddresses.Add(unitAddress);
                }
            }

            var mappedAccessAddress = new AccessAddressData()
            {
                Id               = searchAccessAddress.Id,
                ExternalId       = searchAccessAddress.ExternalId,
                HouseNumber      = searchAccessAddress.HouseNumber,
                PostDistrictCode = searchAccessAddress.PostDistrictCode,
                PostDistrict     = searchAccessAddress.PostDistrict,
                RoadCode         = searchAccessAddress.RoadCode,
                RoadName         = searchAccessAddress.RoadName,
                TownName         = searchAccessAddress.TownName,
                MunicipalCode    = searchAccessAddress.MunicipalCode,
                Xetrs            = searchAccessAddress.AddressPoint.X,
                Yetrs            = searchAccessAddress.AddressPoint.Y,
                Xwgs             = wgs84Coord[0],
                Ywgs             = wgs84Coord[1],
                UnitAddresses    = unitAddresses
            };

            return(mappedAccessAddress);
        }