SASGIS

Веб-картография и навигация


View Revisions: Issue #2669 All Revisions ] Back to Issue ]
Summary 0002669: Переделать ICoordConverter
Revision 01-09-2015 05:47 by vdemidov
Description В интерфейсе ICoordConverter слишком много методов - нужно их перенести в другие интерфейсы и в частности максимально избавиться от использования параметра Zoom. В таком виде как он есть сейчас зум имеет очень ограниченное применение - по хорошему, он должен использоваться только в пределах одного конкретного ICoordConverter.

Нужно ввести интерфейс IProjectionType, который будет задавать параметры проекции: датум + метод проектирования (меркатор на сфере, меркатор на эллипсоиде, широта-долгота). И предоставлять методы для преобразования географических координат и относительных (методы LonLat*2Relative*, Relative*2LonLat*, CheckLonLat*, CheckRelative*, ValidateLonLat*, ValidateRelative*)
Почти все остальные методы из ICoordConverter нужно будет перенести в IProjectionInfo попутно убрав из них указание зума, так как зум уже есть в IProjectionInfo.
После полного перехода на использование методов IProjectionInfo из этого интерфейса можно будет убрать GeoConverter: ICoordConverter и переименовать сам интерфейс в IProjection
В конечном итоге ICoordConverter должен превратиться в контейнер хранящий упорядоченный набор проекций с названием IProjectionSet
Все это упростит использующий код и позволит добавить некоторые оптимизации. А также будет проще добавить таки поддержку нестандартных размеров тайлов.
Revision 30-03-2015 08:10 by vdemidov
Description В интерфейсе ICoordConverter слишком много методов - нужно их перенести в другие интерфейсы и в частности максимально избавиться от использования параметра Zoom. В таком виде как он есть сейчас зум имеет очень ограниченное применение - по хорошему, он должен использоваться только в пределах одного конкретного ICoordConverter.

Нужно ввести интерфейс IProjectionType, который будет задавать параметры проекции: датум + метод проектирования (меркатор на сфере, меркатор на эллипсоиде, широта-долгота). И предоставлять методы для преобразования географических координат и относительных (методы LonLat*2Relative*, Relative*2LonLat*, CheckLonLat*, CheckRelative*, ValidateLonLat*, ValidateRelative*)
Почти все остальные методы из ICoordConverter нужно будет перенести в IProjectionInfo попутно убрав из них указание зума, так как зум уже есть в IProjectionInfo.
После полного перехода на использование методов IProjectionInfo из этого интерфейса можно будет убрать GeoConverter: ICoordConverter и переименовать сам интерфейс в IProjection
В конечном итоге ICoordConverter должен превратиться в контейнер хранящий упорядоченный набор проекций с названием IProjectionsPyramid
Все это упростит использующий код и позволит добавить некоторые оптимизации. А также будет проще добавить таки поддержку нестандартных размеров тайлов.



Copyright © 2007 - 2024 SAS.Planet Team