NHibernate. Spatial и тип Географии Sql 2008 года - Как настроить

Я обычно использую gif's из-за размера, но существует также png-8, который является 256 цветами также.

, Если Вы должны полагать, полупрозрачный материал тогда использует png-24.

я обычно использую, 'сохраняют для веб-' функции в фотошопе, который позволяет Вам играть с типом файла, количеством цветов и т.д. и видеть результат перед сохранением. Конечно, я использовал бы самое маленькое, которое все еще выглядит хорошим в моих глазах.

22
задан hazzik 16 March 2015 в 20:34
поделиться

2 ответа

Не совсем ответ, но вопросы; -)

  • Вы устанавливаете SRID для объекта GisSharpBlog.NetTopologySuite.Geometries.Point ?

По умолчанию (поскольку точка является геометрией) установлено значение 0, и вы получите ошибку SQL при попытке сохранить свойство LocationLog.Location в качестве географии. 0 не является допустимым SRID для полей географии sql. Вам нужно будет указать один из представлений sys.spatial_reference_systems.

  • Вы пробовали без Fluent NHibernate?

Чтобы исключить как можно больше компонентов из проблемы.

1
ответ дан 29 November 2019 в 05:48
поделиться

Стив прав, вам нужно явно установить SRID для вашего типа геометрии. Глядя на исходный код NHibernate.Spatial (который вы можете проверить с помощью SVN или чего-то еще), при поиске SRID это скрывается в коде как подсказка в комментарии:

<class name="MyGeoTableA">
    <property name="MyGeoColumn">
        <type name="NHibernate.Spatial.Type.GeometryType, NHibernate.Spatial">
            <param name="srid">1234</param>
        </type>
    </property>
</class>

Похоже, вам нужно установить параметр с именем SRID на любой номер, который вам нужен (найдите его в таблице SRID). Очевидно, это конфигурация XML старой школы, но у fluent будет где-нибудь метод для добавления строковых параметров ключ / значение. Попробуйте.


Edit

После небольшого исследования я обнаружил, что при попытке установить атрибут srid в столбце не удалось проверить правильность отображения XML NHibernate, возникает исключение XmlSchemaValidationException. Вместо этого я обнаружил, что типы геометрии в NetNopologySuite имеют атрибут SRID на самом объекте, и установка этого заставляет все работать. например,

LocationLog log = new LocationLog { Location = new Point() };
log.Location.SRID = 4326;
Session.Save(log);

Должен быть способ сделать это лучше (настроить его вместо постоянной настройки), но я еще не придумал этого. Если вы заглянете внутрь класса MsSql2008GeometryType, у него есть защищенный метод SetDefaultSRID (IGeometry) - он должен быть там по какой-то причине!

2
ответ дан 29 November 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: