/// <summary>
        /// Resolves the geometry factory.
        /// </summary>
        /// <param name="referenceSystem">The reference system.</param>
        /// <returns>The factory for producing geometries.</returns>
        protected IGeometryFactory ResolveFactory(IReferenceSystem referenceSystem)
        {
            if (_factory == null)
            {
                if (_factoryType == null)
                {
                    _factory = FactoryRegistry.GetFactory <IGeometryFactory>(referenceSystem);
                }
                else
                {
                    _factory = (IGeometryFactory)FactoryRegistry.GetFactory(_factoryType, referenceSystem);
                }
            }

            if (referenceSystem != null && !_factory.ReferenceSystem.Equals(referenceSystem))
            {
                _factory = (IGeometryFactory)FactoryRegistry.GetFactory(_factory.GetType(), referenceSystem);
            }

            return(_factory);
        }