-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathgrid_ref_utils.py
79 lines (59 loc) · 2.43 KB
/
grid_ref_utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# -*- coding: utf-8 -*-
# grid_ref_utils - utilities for grid_ref QGIS plugin
# Copyright (C) 2016 Peter Petrik for Lutra Consulting
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
from PyQt4 import uic
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import os
from qgis.gui import *
from qgis.core import *
class GridRefException(Exception):
pass
def reproject_point_to_4326(canvas, point):
crsSrc = canvas.mapSettings().destinationCrs() # 27700
crsDest = QgsCoordinateReferenceSystem(4326)
xform = QgsCoordinateTransform(crsSrc, crsDest)
return xform.transform(point)
def reproject_point_from_4326(canvas, point):
crsSrc = QgsCoordinateReferenceSystem(4326)
crsDest = canvas.mapSettings().destinationCrs() # 27700
xform = QgsCoordinateTransform(crsSrc, crsDest)
return xform.transform(point)
def gen_marker(canvas, point):
marker = QgsVertexMarker(canvas)
marker.setColor(QColor(255, 0, 0))
marker.setPenWidth(2)
marker.setCenter(point)
return marker
def centre_on_point(canvas, point):
rect = QgsRectangle(point, point)
canvas.setExtent(rect)
canvas.refresh()
def point_from_longlat_text(longlat):
longlat = longlat.split(",")
if len(longlat) != 2:
raise GridRefException()
longitude = float(longlat[0].strip()) # regex validator ensures it passes
latitude = float(longlat[1].strip()) # regex validator ensures it passes
if longitude > 180 or longitude < -180:
raise GridRefException()
if latitude > 90 or latitude < -90:
raise GridRefException()
return QgsPoint(longitude, latitude)
def load_ui(name):
ui_file = os.path.join(os.path.dirname(os.path.realpath(__file__)),
'ui',
name + '.ui')
return uic.loadUiType(ui_file)