Посмотрите, находится ли lat / долго в пределах полигона с помощью mysql

Возможные действия:

1

func scrollToFirstRow() {
    let indexPath = NSIndexPath(forRow: 0, inSection: 0)
    self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Top, animated: true)
}

2

func scrollToLastRow() {
    let indexPath = NSIndexPath(forRow: objects.count - 1, inSection: 0)
    self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Bottom, animated: true)
}

3

func scrollToSelectedRow() {
    let selectedRows = self.tableView.indexPathsForSelectedRows
    if let selectedRow = selectedRows?[0] as? NSIndexPath {
        self.tableView.scrollToRowAtIndexPath(selectedRow, atScrollPosition: .Middle, animated: true)
    }
}

4

func scrollToHeader() {
    self.tableView.scrollRectToVisible(CGRect(x: 0, y: 0, width: 1, height: 1), animated: true)
}

5

func scrollToTop(){
    self.tableView.setContentOffset(CGPointMake(0,  UIApplication.sharedApplication().statusBarFrame.height ), animated: true)
}

Отключить прокрутку вверх:

func disableScrollsToTopPropertyOnAllSubviewsOf(view: UIView) {
    for subview in view.subviews {
        if let scrollView = subview as? UIScrollView {
            (scrollView as UIScrollView).scrollsToTop = false
        }
        self.disableScrollsToTopPropertyOnAllSubviewsOf(subview as UIView)
    }
}

Измените и используйте его согласно требованию.

Swift 4

  func scrollToFirstRow() {
    let indexPath = IndexPath(row: 0, section: 0)
    self.tableView.scrollToRow(at: indexPath, at: .top, animated: true)
  }
14
задан 3 July 2009 в 08:34
поделиться

2 ответа

MySQL начиная с версии 5.1 поддерживает операции только с минимальными ограничивающими прямоугольниками (MBR) . Хотя существует функция « Содержит », которая будет делать то, что вам нужно, она реализована не полностью и возвращается к использованию MBRContains

С соответствующей страницы руководства

В настоящее время , MySQL не реализует эти функции в соответствии с Технические характеристики. Те, которые реализовано вернуть тот же результат, что и соответствующие функции на основе MBR. Сюда входят функции в следующий список кроме Distance () и связанные ().

Эти функции могут быть реализованы в будущие выпуски с полной поддержкой пространственный анализ, а не только на основе MBR support.

Что вы могли бы сделать, так это позволить MySQL дать вам приблизительный результат на основе MBR, а затем выполнить его постобработку для выполнения более точного теста. В качестве альтернативы переключитесь на PostGIS !

(Обновление от мая 2012 г. - спасибо Майку Тэйвсу)

MySQL 5.6.1+ предлагает функций, которые используют формы объектов вместо MBR

MySQL изначально реализовал эти функции таким образом, что они использовали прямоугольников, ограничивающих объект, и вернул тот же результат, что и соответствующие функции на основе MBR. Начиная с MySQL 5.6.1, соответствующие доступны версии, использующие точные формы объектов. Эти версии названы с префиксом ST_. Например, Contains () использует объект ограничивающие прямоугольники, тогда как ST_Contains () использует формы объектов.

17
ответ дан 1 December 2019 в 12:13
поделиться

Если вы не можете изменить базу данных на такую, в которой пространственные операторы реализованы правильно, например, расширение PostgreSQL PostGIS http://postgis.refractions.net/ , вы можете решить эту проблему, используя подход, состоящий из двух частей.

Сначала позвольте MySQL дать вам результат предварительной фильтрации ограничивающего прямоугольника на основе ограничивающего прямоугольника (это то, что он делает по умолчанию), используя их оператор пересечений ( http: //dev.mysql .com / doc / refman / 5.1 / ru / functions-that-test-space-Relations-between-geometries.html # function_intersects ). Если запросы выполняются медленно, сначала убедитесь, что у вас есть индекс для вашего поля геометрии.

Затем гидратируйте исходную геометрию, которую вы использовали в своем запросе, в геометрический объект библиотеки геометрии ГИС, такой как GEOS ( http: // trac.osgeo.org/geos/) (на основе C ++, хотя он также имеет привязки для разных языков, таких как Python), Shapely ( http://trac.gispython.org/lab/wiki/Shapely) , OGR (или Java Topology Suite (JTS) http://www.vividsolutions.com/jts/jtshome.htm ).

Проверьте каждую геометрию, полученную в результате запроса, с помощью соответствующего оператора, например внутри или пересекает . Любая из этих библиотек даст вам логический результат.

Лично я бы посмотрел на образцы для OGR, так как у него есть большое сообщество, готовое помочь.

6
ответ дан 1 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

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