f746207dc6
- Remove georef and histogram patches - Add spatialindex patch
258 lines
7.9 KiB
Diff
258 lines
7.9 KiB
Diff
--- qgis-1.7.1/CMakeLists.txt 2011-09-24 01:38:02.000000000 +0200
|
|
+++ ../BUILD/qgis-1.7.1/CMakeLists.txt 2011-10-16 16:17:07.042202703 +0200
|
|
@@ -66,7 +66,9 @@
|
|
SET (POSTGRESQL_PREFIX "" CACHE PATH "Path to POSTGRESQL base directory")
|
|
ENDIF (WITH_POSTGRESQL)
|
|
|
|
-SET (WITH_INTERNAL_QWTPOLAR TRUE CACHE BOOL "Use internal built of QwtPolar")
|
|
+SET (WITH_INTERNAL_QWTPOLAR TRUE CACHE BOOL "Use internal build of QwtPolar")
|
|
+
|
|
+SET (WITH_INTERNAL_SPATIALINDEX TRUE CACHE BOOL "Use internal build of Spatialindex")
|
|
|
|
SET (WITH_SPATIALITE TRUE CACHE BOOL "Determines whether SPATIALITE support should be built")
|
|
|
|
@@ -145,6 +147,11 @@
|
|
FIND_PACKAGE(GSL) # Georeferencer
|
|
FIND_PACKAGE(GEOS)
|
|
FIND_PACKAGE(GDAL)
|
|
+
|
|
+IF (NOT WITH_INTERNAL_SPATIALINDEX)
|
|
+ FIND_PACKAGE(Spatialindex REQUIRED)
|
|
+ENDIF(NOT WITH_INTERNAL_SPATIALINDEX)
|
|
+
|
|
FIND_PACKAGE(Qwt REQUIRED)
|
|
IF (NOT WITH_INTERNAL_QWTPOLAR)
|
|
FIND_PACKAGE(QwtPolar REQUIRED)
|
|
--- qgis-1.7.1/src/core/CMakeLists.txt 2011-09-24 01:38:02.000000000 +0200
|
|
+++ ../BUILD/qgis-1.7.1/src/core/CMakeLists.txt 2011-10-16 16:19:28.845050529 +0200
|
|
@@ -266,7 +266,6 @@
|
|
raster
|
|
renderer
|
|
symbology
|
|
- spatialindex/include
|
|
symbology-ng
|
|
gps/qextserialport
|
|
${PROJ_INCLUDE_DIR}
|
|
@@ -274,6 +273,12 @@
|
|
${GDAL_INCLUDE_DIR}
|
|
)
|
|
|
|
+IF (NOT WITH_INTERNAL_SPATIALINDEX)
|
|
+ INCLUDE_DIRECTORIES(${SPATIALINDEX_INCLUDE_DIR})
|
|
+ELSE (NOT WITH_INTERNAL_SPATIALINDEX)
|
|
+ INCLUDE_DIRECTORIES(spatialindex/include)
|
|
+ENDIF (NOT WITH_INTERNAL_SPATIALINDEX)
|
|
+
|
|
IF (NOT WITH_INTERNAL_SPATIALITE)
|
|
INCLUDE_DIRECTORIES(${SQLITE3_INCLUDE_DIR})
|
|
ENDIF (NOT WITH_INTERNAL_SPATIALITE)
|
|
@@ -296,25 +301,27 @@
|
|
#############################################################
|
|
# spatial indexing library
|
|
|
|
-# add path prefix to every specified file
|
|
-MACRO(PATH_PREFIX OUTPUT PREFIX)
|
|
- FOREACH(F ${ARGN})
|
|
- SET(${OUTPUT} ${${OUTPUT}} ${PREFIX}/${F})
|
|
- ENDFOREACH(F)
|
|
-ENDMACRO(PATH_PREFIX)
|
|
-
|
|
-# tools library
|
|
-PATH_PREFIX(TOOLS_SRC tools ExternalSort.cc ExternalSort.h TemporaryFile.cc Tools.cc)
|
|
-PATH_PREFIX(GEOM_SRC geometry LineSegment.cc Point.cc Region.cc)
|
|
-
|
|
-# spatial index library
|
|
-PATH_PREFIX(SPINDEX_SRC spatialindex SpatialIndexImpl.cc)
|
|
-PATH_PREFIX(STMAN_SRC storagemanager Buffer.cc DiskStorageManager.cc MemoryStorageManager.cc RandomEvictionsBuffer.cc)
|
|
-PATH_PREFIX(RTREE_SRC rtree BulkLoader.cc Index.cc Leaf.cc Node.cc RTree.cc Statistics.cc)
|
|
-
|
|
-SET(SPINDEX_SRC ${TOOLS_SRC} ${GEOM_SRC} ${SPINDEX_SRC} ${STMAN_SRC} ${RTREE_SRC})
|
|
-
|
|
-PATH_PREFIX(INDEX_SRC spatialindex ${SPINDEX_SRC})
|
|
+IF (WITH_INTERNAL_SPATIALINDEX)
|
|
+ # add path prefix to every specified file
|
|
+ MACRO(PATH_PREFIX OUTPUT PREFIX)
|
|
+ FOREACH(F ${ARGN})
|
|
+ SET(${OUTPUT} ${${OUTPUT}} ${PREFIX}/${F})
|
|
+ ENDFOREACH(F)
|
|
+ ENDMACRO(PATH_PREFIX)
|
|
+
|
|
+ # tools library
|
|
+ PATH_PREFIX(TOOLS_SRC tools ExternalSort.cc ExternalSort.h TemporaryFile.cc Tools.cc)
|
|
+ PATH_PREFIX(GEOM_SRC geometry LineSegment.cc Point.cc Region.cc)
|
|
+
|
|
+ # spatial index library
|
|
+ PATH_PREFIX(SPINDEX_SRC spatialindex SpatialIndexImpl.cc)
|
|
+ PATH_PREFIX(STMAN_SRC storagemanager Buffer.cc DiskStorageManager.cc MemoryStorageManager.cc RandomEvictionsBuffer.cc)
|
|
+ PATH_PREFIX(RTREE_SRC rtree BulkLoader.cc Index.cc Leaf.cc Node.cc RTree.cc Statistics.cc)
|
|
+
|
|
+ SET(SPINDEX_SRC ${TOOLS_SRC} ${GEOM_SRC} ${SPINDEX_SRC} ${STMAN_SRC} ${RTREE_SRC})
|
|
+
|
|
+ PATH_PREFIX(INDEX_SRC spatialindex ${SPINDEX_SRC})
|
|
+ENDIF (WITH_INTERNAL_SPATIALINDEX)
|
|
|
|
#############################################################
|
|
# qgis_core library
|
|
@@ -360,6 +367,11 @@
|
|
TARGET_LINK_LIBRARIES(qgis_core ${SQLITE3_LIBRARY})
|
|
ENDIF (WITH_INTERNAL_SPATIALITE)
|
|
|
|
+IF (NOT WITH_INTERNAL_SPATIALINDEX)
|
|
+ TARGET_LINK_LIBRARIES(qgis_core ${SPATIALINDEX_LIBRARY})
|
|
+ENDIF (NOT WITH_INTERNAL_SPATIALINDEX)
|
|
+
|
|
+
|
|
IF (APPLE)
|
|
SET_TARGET_PROPERTIES(qgis_core PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE )
|
|
ENDIF (APPLE)
|
|
--- qgis-1.7.1/cmake/FindSpatialindex.cmake 1970-01-01 01:00:00.000000000 +0100
|
|
+++ ../BUILD/qgis-1.7.1/cmake/FindSpatialindex.cmake 2011-10-16 16:17:07.043202653 +0200
|
|
@@ -0,0 +1,41 @@
|
|
+# Find Spatialindex
|
|
+# ~~~~~~~~
|
|
+# Redistribution and use is allowed according to the terms of the BSD license.
|
|
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
|
+#
|
|
+# Once run this will define:
|
|
+#
|
|
+# SPATIALINDEX_FOUND = system has Spatialindex lib
|
|
+# SPATIALINDEX_LIBRARY = full path to the Spatialindex library
|
|
+# SPATIALINDEX_INCLUDE_DIR = where to find headers
|
|
+#
|
|
+
|
|
+
|
|
+FIND_PATH(SPATIALINDEX_INCLUDE_DIR NAMES SpatialIndex.h PATHS
|
|
+ /usr/include
|
|
+ /usr/local/include
|
|
+ "$ENV{LIB_DIR}/include"
|
|
+ "$ENV{INCLUDE}"
|
|
+ PATH_SUFFIXES spatialindex
|
|
+ )
|
|
+
|
|
+FIND_LIBRARY(SPATIALINDEX_LIBRARY NAMES spatialindex PATHS
|
|
+ /usr/lib
|
|
+ /usr/local/lib
|
|
+ "$ENV{LIB_DIR}/lib"
|
|
+ "$ENV{LIB}/lib"
|
|
+ )
|
|
+
|
|
+IF (SPATIALINDEX_INCLUDE_DIR AND SPATIALINDEX_LIBRARY)
|
|
+ SET(SPATIALINDEX_FOUND TRUE)
|
|
+ENDIF (SPATIALINDEX_INCLUDE_DIR AND SPATIALINDEX_LIBRARY)
|
|
+
|
|
+IF (SPATIALINDEX_FOUND)
|
|
+ IF (NOT SPATIALINDEX_FIND_QUIETLY)
|
|
+ MESSAGE(STATUS "Found Spatialindex: ${SPATIALINDEX_LIBRARY}")
|
|
+ ENDIF (NOT SPATIALINDEX_FIND_QUIETLY)
|
|
+ELSE (SPATIALINDEX_FOUND)
|
|
+ IF (SPATIALINDEX_FIND_REQUIRED)
|
|
+ MESSAGE(FATAL_ERROR "Could not find Spatialindex")
|
|
+ ENDIF (SPATIALINDEX_FIND_REQUIRED)
|
|
+ENDIF (SPATIALINDEX_FOUND)
|
|
--- qgis-1.7.1/src/core/spatialindex/qgsspatialindex.h 2011-09-24 01:38:02.000000000 +0200
|
|
+++ ../BUILD/qgis-1.7.1/src/core/spatialindex/qgsspatialindex.h 2011-10-16 16:21:28.682006432 +0200
|
|
@@ -22,6 +22,8 @@
|
|
{
|
|
class IStorageManager;
|
|
class ISpatialIndex;
|
|
+ class Region;
|
|
+ class Point;
|
|
|
|
namespace StorageManager
|
|
{
|
|
@@ -29,14 +31,6 @@
|
|
}
|
|
}
|
|
|
|
-namespace Tools
|
|
-{
|
|
- namespace Geometry
|
|
- {
|
|
- class Region;
|
|
- }
|
|
-}
|
|
-
|
|
class QgsFeature;
|
|
class QgsRectangle;
|
|
class QgsPoint;
|
|
@@ -82,9 +76,9 @@
|
|
|
|
protected:
|
|
|
|
- Tools::Geometry::Region rectToRegion( QgsRectangle rect );
|
|
+ SpatialIndex::Region rectToRegion( QgsRectangle rect );
|
|
|
|
- bool featureInfo( QgsFeature& f, Tools::Geometry::Region& r, long& id );
|
|
+ bool featureInfo( QgsFeature& f, SpatialIndex::Region& r, long& id );
|
|
|
|
|
|
private:
|
|
--- qgis-1.7.1/src/core/spatialindex/qgsspatialindex.cpp 2011-09-24 01:38:02.000000000 +0200
|
|
+++ ../BUILD/qgis-1.7.1/src/core/spatialindex/qgsspatialindex.cpp 2011-10-16 17:06:45.806073042 +0200
|
|
@@ -66,7 +66,7 @@
|
|
RTree::RTreeVariant variant = RTree::RV_RSTAR;
|
|
|
|
// create R-tree
|
|
- long indexId;
|
|
+ SpatialIndex::id_type indexId;
|
|
mRTree = RTree::createNewRTree( *mStorage, fillFactor, indexCapacity,
|
|
leafCapacity, dimension, variant, indexId );
|
|
}
|
|
@@ -78,17 +78,17 @@
|
|
delete mStorageManager;
|
|
}
|
|
|
|
-Tools::Geometry::Region QgsSpatialIndex::rectToRegion( QgsRectangle rect )
|
|
+SpatialIndex::Region QgsSpatialIndex::rectToRegion( QgsRectangle rect )
|
|
{
|
|
double pt1[2], pt2[2];
|
|
pt1[0] = rect.xMinimum();
|
|
pt1[1] = rect.yMinimum();
|
|
pt2[0] = rect.xMaximum();
|
|
pt2[1] = rect.yMaximum();
|
|
- return Tools::Geometry::Region( pt1, pt2, 2 );
|
|
+ return Region( pt1, pt2, 2 );
|
|
}
|
|
|
|
-bool QgsSpatialIndex::featureInfo( QgsFeature& f, Tools::Geometry::Region& r, long& id )
|
|
+bool QgsSpatialIndex::featureInfo( QgsFeature& f, Region& r, long& id )
|
|
{
|
|
QgsGeometry *g = f.geometry();
|
|
if ( !g )
|
|
@@ -101,7 +101,7 @@
|
|
|
|
bool QgsSpatialIndex::insertFeature( QgsFeature& f )
|
|
{
|
|
- Tools::Geometry::Region r;
|
|
+ Region r;
|
|
long id;
|
|
if ( !featureInfo( f, r, id ) )
|
|
return false;
|
|
@@ -131,7 +131,7 @@
|
|
|
|
bool QgsSpatialIndex::deleteFeature( QgsFeature& f )
|
|
{
|
|
- Tools::Geometry::Region r;
|
|
+ Region r;
|
|
long id;
|
|
if ( !featureInfo( f, r, id ) )
|
|
return false;
|
|
@@ -145,7 +145,7 @@
|
|
QList<int> list;
|
|
QgisVisitor visitor( list );
|
|
|
|
- Tools::Geometry::Region r = rectToRegion( rect );
|
|
+ Region r = rectToRegion( rect );
|
|
|
|
mRTree->intersectsWithQuery( r, visitor );
|
|
|
|
@@ -160,7 +160,7 @@
|
|
double pt[2];
|
|
pt[0] = point.x();
|
|
pt[1] = point.y();
|
|
- Tools::Geometry::Point p( pt, 2 );
|
|
+ Point p( pt, 2 );
|
|
|
|
mRTree->nearestNeighborQuery( neighbors, p, visitor );
|
|
|