本文整理汇总了Python中qgis.core.QgsCoordinateReferenceSystem.postgisSrid方法的典型用法代码示例。如果您正苦于以下问题:Python QgsCoordinateReferenceSystem.postgisSrid方法的具体用法?Python QgsCoordinateReferenceSystem.postgisSrid怎么用?Python QgsCoordinateReferenceSystem.postgisSrid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsCoordinateReferenceSystem
的用法示例。
在下文中一共展示了QgsCoordinateReferenceSystem.postgisSrid方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: processAlgorithm
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import postgisSrid [as 别名]
def processAlgorithm(self, feedback):
layers = self.getParameterValue(self.INPUT_DATASOURCES)
query = self.getParameterValue(self.INPUT_QUERY)
uid_field = self.getParameterValue(self.INPUT_UID_FIELD)
geometry_field = self.getParameterValue(self.INPUT_GEOMETRY_FIELD)
geometry_type = self.getParameterValue(self.INPUT_GEOMETRY_TYPE)
geometry_crs = self.getParameterValue(self.INPUT_GEOMETRY_CRS)
df = QgsVirtualLayerDefinition()
layerIdx = 1
if layers:
for layerSource in layers.split(';'):
layer = dataobjects.getObjectFromUri(layerSource)
if layer:
df.addSource('input{}'.format(layerIdx), layer.id())
layerIdx += 1
if query == '':
raise GeoAlgorithmExecutionException(
self.tr('Empty SQL. Please enter valid SQL expression and try again.'))
else:
df.setQuery(query)
if uid_field:
df.setUid(uid_field)
if geometry_type == 1: # no geometry
df.setGeometryWkbType(QgsWkbTypes.NullGeometry)
else:
if geometry_field:
df.setGeometryField(geometry_field)
if geometry_type > 1:
df.setGeometryWkbType(geometry_type - 1)
if geometry_crs:
crs = QgsCoordinateReferenceSystem(geometry_crs)
if crs.isValid():
df.setGeometrySrid(crs.postgisSrid())
vLayer = QgsVectorLayer(df.toString(), "temp_vlayer", "virtual")
if not vLayer.isValid():
raise GeoAlgorithmExecutionException(vLayer.dataProvider().error().message())
writer = self.getOutputFromName(self.OUTPUT_LAYER).getVectorWriter(
vLayer.fields().toList(),
# Create a point layer (without any points) if 'no geometry' is chosen
vLayer.wkbType() if geometry_type != 1 else 1,
vLayer.crs())
features = vector.features(vLayer)
total = 100.0 / len(features)
outFeat = QgsFeature()
for current, inFeat in enumerate(features):
outFeat.setAttributes(inFeat.attributes())
if geometry_type != 1:
outFeat.setGeometry(inFeat.geometry())
writer.addFeature(outFeat)
feedback.setProgress(int(current * total))
del writer
示例2: find
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import postgisSrid [as 别名]
def find(self, to_find):
if self.settings.value("qftsfilepath") == '':
return
if not self.isValid:
self.message.emit("Cannot search in project. QuickFinder file is probably currently in use.",QgsMessageBar.WARNING)
return
# add star after each word except numbers
to_find = to_find.split(' ')
for i,word in enumerate(to_find):
try:
int(word)
except ValueError:
to_find[i] = '%s*' % word
to_find = ' '.join(to_find)
# FTS request
sql = "SELECT search_id,content,x,y,wkb_geom FROM quickfinder_data WHERE content MATCH ?"
cur = self.conn.cursor()
catLimit = self.settings.value("categoryLimit")
totalLimit = self.settings.value("totalLimit")
catFound = {}
for row in cur.execute(sql, [to_find]):
search_id, content, x, y, wkb_geom = row
if catFound.has_key(search_id):
if catFound[search_id] >= catLimit:
continue
catFound[search_id] += 1
else:
catFound[search_id] = 1
if not self._searches.has_key(search_id):
continue
gs = self._searches[search_id].geometryStorage
geometry = QgsGeometry()
if gs == 'wkb':
geometry.fromWkb(binascii.a2b_hex(wkb_geom))
else:
# wkt or extent are stored as wkt
geometry = geometry.fromWkt(wkb_geom)
crs = QgsCoordinateReferenceSystem()
crs.createFromString(self._searches[search_id].srid)
self.result_found.emit(self,
self._searches[search_id].searchName,
content,
geometry,
crs.postgisSrid())
if sum(catFound.values()) >= totalLimit:
break
示例3: record_clicked
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import postgisSrid [as 别名]
def record_clicked(self):
"""record clicked signal"""
# disable only service buttons
self.reset_buttons(True, False, False)
if not self.treeRecords.selectedItems():
return
item = self.treeRecords.currentItem()
if not item:
return
identifier = get_item_data(item, 'identifier')
try:
record = self.catalog.records[identifier]
except KeyError as err:
QMessageBox.warning(self,
self.tr('Record parsing error'),
'Unable to locate record identifier')
return
# if the record has a bbox, show a footprint on the map
if record.bbox is not None:
points = bbox_to_polygon(record.bbox)
if points is not None:
src = QgsCoordinateReferenceSystem(4326)
dst = self.map.mapSettings().destinationCrs()
geom = QgsGeometry.fromPolygon(points)
if src.postgisSrid() != dst.postgisSrid():
ctr = QgsCoordinateTransform(src, dst)
try:
geom.transform(ctr)
except Exception as err:
QMessageBox.warning(
self,
self.tr('Coordinate Transformation Error'),
unicode(err))
self.rubber_band.setToGeometry(geom, None)
# figure out if the data is interactive and can be operated on
self.find_services(record, item)
示例4: find
# 需要导入模块: from qgis.core import QgsCoordinateReferenceSystem [as 别名]
# 或者: from qgis.core.QgsCoordinateReferenceSystem import postgisSrid [as 别名]
def find(self, toFind):
if self.settings.value("qftsfilepath") == "":
return
if not self.isValid:
self.message.emit(
"Cannot search in project. QuickFinder file is probably currently in use.", QgsMessageBar.WARNING
)
return
# add star after each word except numbers
toFind = toFind.split(" ")
for i, word in enumerate(toFind):
try:
int(word)
except ValueError:
toFind[i] = "%s*" % word
toFind = " ".join(toFind)
# FTS request
sql = "SELECT search_id,content,x,y,wkb_geom FROM quickfinder_data WHERE content MATCH ?"
cur = self.conn.cursor()
cur.execute(sql, [toFind])
catLimit = self.settings.value("categoryLimit")
totalLimit = self.settings.value("totalLimit")
nFound = 0
catFound = {}
while True:
s = cur.fetchone()
if s is None:
return
search_id, content, x, y, wkb_geom = s
if catFound.has_key(search_id):
if catFound[search_id] >= catLimit:
continue
catFound[search_id] += 1
else:
catFound[search_id] = 1
if not self._searches.has_key(search_id):
continue
geometry = QgsGeometry()
geometry.fromWkb(binascii.a2b_hex(wkb_geom))
crs = QgsCoordinateReferenceSystem()
crs.createFromString(self._searches[search_id].srid)
self.resultFound.emit(self, self._searches[search_id].searchName, content, geometry, crs.postgisSrid())
nFound += 1
if nFound >= totalLimit:
break