You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2016/11/25 11:07:10 UTC

[05/26] lucenenet git commit: Updated Lucene.Net.Spatial to use Spatial4n 0.4.1

Updated Lucene.Net.Spatial to use Spatial4n 0.4.1


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/d5547927
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/d5547927
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/d5547927

Branch: refs/heads/master
Commit: d55479270881f348d1ce80719061b573d67d38b6
Parents: 6c7cc79
Author: Shad Storhaug <sh...@shadstorhaug.com>
Authored: Tue Nov 15 22:17:09 2016 +0700
Committer: Shad Storhaug <sh...@shadstorhaug.com>
Committed: Tue Nov 15 22:17:09 2016 +0700

----------------------------------------------------------------------
 Lucene.Net.sln                                  | 79 ++++++++++++++++++--
 .../Lucene.Net.Spatial.csproj                   | 16 +++-
 .../Prefix/AbstractPrefixTreeFilter.cs          |  4 +-
 .../Prefix/AbstractVisitingPrefixTreeFilter.cs  |  2 +-
 .../Prefix/ContainsPrefixTreeFilter.cs          |  6 +-
 .../Prefix/IntersectsPrefixTreeFilter.cs        |  2 +-
 .../Prefix/PointPrefixTreeFieldCacheProvider.cs |  4 +-
 .../Prefix/PrefixTreeStrategy.cs                |  6 +-
 src/Lucene.Net.Spatial/Prefix/Tree/Cell.cs      | 14 ++--
 .../Prefix/Tree/GeohashPrefixTree.cs            | 17 ++---
 .../Prefix/Tree/QuadPrefixTree.cs               | 30 ++++----
 .../Prefix/Tree/SpatialPrefixTree.cs            | 20 ++---
 .../Prefix/WithinPrefixTreeFilter.cs            | 42 +++++------
 src/Lucene.Net.Spatial/Query/SpatialArgs.cs     | 18 ++---
 .../Serialized/SerializedDVStrategy.cs          |  4 +-
 src/Lucene.Net.Spatial/SpatialStrategy.cs       | 16 ++--
 src/Lucene.Net.Spatial/Util/ShapeFieldCache.cs  |  2 +-
 .../Util/ShapeFieldCacheDistanceValueSource.cs  | 16 ++--
 .../Util/ShapeFieldCacheProvider.cs             |  2 +-
 .../Vector/DistanceValueSource.cs               | 12 +--
 .../Vector/PointVectorStrategy.cs               | 58 +++++++-------
 src/Lucene.Net.Spatial/packages.config          |  4 +-
 22 files changed, 227 insertions(+), 147 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/Lucene.Net.sln
----------------------------------------------------------------------
diff --git a/Lucene.Net.sln b/Lucene.Net.sln
index 7fe1c8e..136a3fe 100644
--- a/Lucene.Net.sln
+++ b/Lucene.Net.sln
@@ -69,6 +69,7 @@ EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lucene.Net.Tests.Analysis.Stempel", "src\Lucene.Net.Tests.Analysis.Stempel\Lucene.Net.Tests.Analysis.Stempel.csproj", "{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lucene.Net.Tests.Grouping", "src\Lucene.Net.Tests.Grouping\Lucene.Net.Tests.Grouping.csproj", "{C2349F0D-FB66-4544-9C33-4D87F73C6004}"
+EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lucene.Net.Spatial", "src\Lucene.Net.Spatial\Lucene.Net.Spatial.csproj", "{35C347F4-24B2-4BE5-8117-A0E3001551CE}"
 EndProject
 Global
@@ -486,140 +487,206 @@ Global
 		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release|x86.ActiveCfg = Release|Any CPU
 		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release|x86.Build.0 = Release|Any CPU
+		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|Any CPU.Build.0 = Release|Any CPU
+		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|Mixed Platforms.Build.0 = Release|Any CPU
+		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|x86.ActiveCfg = Release|Any CPU
+		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|x86.Build.0 = Release|Any CPU
 		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Release|Any CPU.Build.0 = Release|Any CPU
 		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Release|x86.ActiveCfg = Release|Any CPU
+		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{949BA34B-6AE6-4CE3-B578-61E13E4D76BF}.Release35|x86.ActiveCfg = Release|Any CPU
 		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Release|Any CPU.Build.0 = Release|Any CPU
 		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Release|x86.ActiveCfg = Release|Any CPU
+		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{5719FB4F-BF80-40E5-BACC-37E8E18FCA2E}.Release35|x86.ActiveCfg = Release|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Debug|x86.Build.0 = Debug|Any CPU
+		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Release|Any CPU.Build.0 = Release|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Release|x86.ActiveCfg = Release|Any CPU
 		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Release|x86.Build.0 = Release|Any CPU
+		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{A3A0D943-B91A-4B7A-9FCB-6160EA575D95}.Release35|x86.ActiveCfg = Release|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Debug|x86.Build.0 = Debug|Any CPU
+		{7895E023-EB91-401C-B2B3-754EEC42134B}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{7895E023-EB91-401C-B2B3-754EEC42134B}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7895E023-EB91-401C-B2B3-754EEC42134B}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Release|Any CPU.Build.0 = Release|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Release|x86.ActiveCfg = Release|Any CPU
 		{7895E023-EB91-401C-B2B3-754EEC42134B}.Release|x86.Build.0 = Release|Any CPU
+		{7895E023-EB91-401C-B2B3-754EEC42134B}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{7895E023-EB91-401C-B2B3-754EEC42134B}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7895E023-EB91-401C-B2B3-754EEC42134B}.Release35|x86.ActiveCfg = Release|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Debug|x86.Build.0 = Debug|Any CPU
+		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Release|Any CPU.Build.0 = Release|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Release|x86.ActiveCfg = Release|Any CPU
 		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Release|x86.Build.0 = Release|Any CPU
+		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{FBD2EB4D-EAC9-409C-A23D-64D27DF23576}.Release35|x86.ActiveCfg = Release|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Debug|x86.Build.0 = Debug|Any CPU
+		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Release|Any CPU.Build.0 = Release|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Release|x86.ActiveCfg = Release|Any CPU
 		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Release|x86.Build.0 = Release|Any CPU
+		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{A6511598-3008-4A3B-AE68-2D1DA792CA8A}.Release35|x86.ActiveCfg = Release|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Debug|x86.Build.0 = Debug|Any CPU
+		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Release|Any CPU.Build.0 = Release|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Release|x86.ActiveCfg = Release|Any CPU
 		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Release|x86.Build.0 = Release|Any CPU
+		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{42ECF239-AFC1-427D-921E-B5A277809CF0}.Release35|x86.ActiveCfg = Release|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Debug|x86.Build.0 = Debug|Any CPU
+		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Release|Any CPU.Build.0 = Release|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Release|x86.ActiveCfg = Release|Any CPU
 		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Release|x86.Build.0 = Release|Any CPU
+		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7F9378BF-C88D-46FF-9AE8-5E7D8C0225D3}.Release35|x86.ActiveCfg = Release|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Debug|x86.Build.0 = Debug|Any CPU
+		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Release|Any CPU.Build.0 = Release|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Release|x86.ActiveCfg = Release|Any CPU
 		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Release|x86.Build.0 = Release|Any CPU
+		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{A76DAD88-E3A5-40F9-9114-FACD77BD8265}.Release35|x86.ActiveCfg = Release|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Debug|x86.Build.0 = Debug|Any CPU
+		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Release|Any CPU.Build.0 = Release|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Release|x86.ActiveCfg = Release|Any CPU
 		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Release|x86.Build.0 = Release|Any CPU
+		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{940A6AB1-F00A-40E2-BC1A-2898EFA8C48F}.Release35|x86.ActiveCfg = Release|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Debug|x86.Build.0 = Debug|Any CPU
+		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Debug35|Any CPU.ActiveCfg = Debug|Any CPU
+		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Debug35|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Debug35|x86.ActiveCfg = Debug|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Release|Any CPU.Build.0 = Release|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Release|x86.ActiveCfg = Release|Any CPU
 		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Release|x86.Build.0 = Release|Any CPU
-		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|Any CPU.ActiveCfg = Release|Any CPU
-		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|Any CPU.Build.0 = Release|Any CPU
-		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
-		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|Mixed Platforms.Build.0 = Release|Any CPU
-		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|x86.ActiveCfg = Release|Any CPU
-		{351B75B1-BBD5-4E32-8036-7BED4E0135A6}.Release35|x86.Build.0 = Release|Any CPU
+		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Release35|Any CPU.ActiveCfg = Release|Any CPU
+		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Release35|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{C2349F0D-FB66-4544-9C33-4D87F73C6004}.Release35|x86.ActiveCfg = Release|Any CPU
 		{35C347F4-24B2-4BE5-8117-A0E3001551CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{35C347F4-24B2-4BE5-8117-A0E3001551CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{35C347F4-24B2-4BE5-8117-A0E3001551CE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Lucene.Net.Spatial.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Lucene.Net.Spatial.csproj b/src/Lucene.Net.Spatial/Lucene.Net.Spatial.csproj
index f6669e6..2689008 100644
--- a/src/Lucene.Net.Spatial/Lucene.Net.Spatial.csproj
+++ b/src/Lucene.Net.Spatial/Lucene.Net.Spatial.csproj
@@ -57,8 +57,20 @@
     <StartupObject />
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Spatial4n.Core, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9f9456e1ca16d45e, processorArchitecture=MSIL">
-      <HintPath>..\..\packages\Spatial4n.Core.0.3\lib\net40\Spatial4n.Core.dll</HintPath>
+    <Reference Include="Spatial4n.Core.NTS">
+      <HintPath>..\..\packages\Spatial4n.Core.NTS.0.4.1\lib\net40\Spatial4n.Core.NTS.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="GeoAPI, Version=1.7.4.0, Culture=neutral, PublicKeyToken=a1a0da7def465678, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\GeoAPI.1.7.4\lib\net45\GeoAPI.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="NetTopologySuite, Version=1.14.0.0, Culture=neutral, PublicKeyToken=f580a05016ebada1, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\NetTopologySuite.1.14\lib\net45\NetTopologySuite.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
+    <Reference Include="PowerCollections, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2573bf8a1bdddcd5, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\NetTopologySuite.1.14\lib\net45\PowerCollections.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="System" />

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/AbstractPrefixTreeFilter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/AbstractPrefixTreeFilter.cs b/src/Lucene.Net.Spatial/Prefix/AbstractPrefixTreeFilter.cs
index fadab36..0591a35 100644
--- a/src/Lucene.Net.Spatial/Prefix/AbstractPrefixTreeFilter.cs
+++ b/src/Lucene.Net.Spatial/Prefix/AbstractPrefixTreeFilter.cs
@@ -29,12 +29,12 @@ namespace Lucene.Net.Spatial.Prefix
     /// </summary>
     public abstract class AbstractPrefixTreeFilter : Filter
     {
-        protected internal readonly Shape queryShape;
+        protected internal readonly IShape queryShape;
         protected internal readonly string fieldName;
         protected internal readonly SpatialPrefixTree grid;//not in equals/hashCode since it's implied for a specific field
         protected internal readonly int detailLevel;
         
-        public AbstractPrefixTreeFilter(Shape queryShape, string fieldName, SpatialPrefixTree grid, int detailLevel)
+        public AbstractPrefixTreeFilter(IShape queryShape, string fieldName, SpatialPrefixTree grid, int detailLevel)
         {
             this.queryShape = queryShape;
             this.fieldName = fieldName;

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/AbstractVisitingPrefixTreeFilter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/AbstractVisitingPrefixTreeFilter.cs b/src/Lucene.Net.Spatial/Prefix/AbstractVisitingPrefixTreeFilter.cs
index 861c0de..e368a55 100644
--- a/src/Lucene.Net.Spatial/Prefix/AbstractVisitingPrefixTreeFilter.cs
+++ b/src/Lucene.Net.Spatial/Prefix/AbstractVisitingPrefixTreeFilter.cs
@@ -45,7 +45,7 @@ namespace Lucene.Net.Spatial.Prefix
 
         protected internal readonly int prefixGridScanLevel;
 
-        public AbstractVisitingPrefixTreeFilter(Shape queryShape, string fieldName, SpatialPrefixTree grid, 
+        public AbstractVisitingPrefixTreeFilter(IShape queryShape, string fieldName, SpatialPrefixTree grid, 
                                                 int detailLevel, int prefixGridScanLevel)
             : base(queryShape, fieldName, grid, detailLevel)
         {

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/ContainsPrefixTreeFilter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/ContainsPrefixTreeFilter.cs b/src/Lucene.Net.Spatial/Prefix/ContainsPrefixTreeFilter.cs
index c6c448f..017b518 100644
--- a/src/Lucene.Net.Spatial/Prefix/ContainsPrefixTreeFilter.cs
+++ b/src/Lucene.Net.Spatial/Prefix/ContainsPrefixTreeFilter.cs
@@ -39,7 +39,7 @@ namespace Lucene.Net.Spatial.Prefix
     {
         protected readonly bool multiOverlappingIndexedShapes;
 
-        public ContainsPrefixTreeFilter(Shape queryShape, string fieldName, SpatialPrefixTree grid, int detailLevel, bool multiOverlappingIndexedShapes)
+        public ContainsPrefixTreeFilter(IShape queryShape, string fieldName, SpatialPrefixTree grid, int detailLevel, bool multiOverlappingIndexedShapes)
             : base(queryShape, fieldName, grid, detailLevel)
         {
             this.multiOverlappingIndexedShapes = multiOverlappingIndexedShapes;
@@ -53,7 +53,7 @@ namespace Lucene.Net.Spatial.Prefix
 
         private class ContainsVisitor : BaseTermsEnumTraverser
         {
-            private readonly Shape queryShape;
+            private readonly IShape queryShape;
             private readonly int detailLevel;
             private readonly bool multiOverlappingIndexedShapes;
             private SpatialPrefixTree grid;
@@ -87,7 +87,7 @@ namespace Lucene.Net.Spatial.Prefix
                 SmallDocSet combinedSubResults = null;
 
                 //   Optimization: use null subCellsFilter when we know cell is within the query shape.
-                Shape subCellsFilter = queryShape;
+                IShape subCellsFilter = queryShape;
                 if (cell.Level != 0 && ((cell.GetShapeRel() == null || cell.GetShapeRel() == SpatialRelation.WITHIN)))
                 {
                     subCellsFilter = null;

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/IntersectsPrefixTreeFilter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/IntersectsPrefixTreeFilter.cs b/src/Lucene.Net.Spatial/Prefix/IntersectsPrefixTreeFilter.cs
index 4b8f25b..3d378e0 100644
--- a/src/Lucene.Net.Spatial/Prefix/IntersectsPrefixTreeFilter.cs
+++ b/src/Lucene.Net.Spatial/Prefix/IntersectsPrefixTreeFilter.cs
@@ -33,7 +33,7 @@ namespace Lucene.Net.Spatial.Prefix
     {
         private readonly bool hasIndexedLeaves;
 
-        public IntersectsPrefixTreeFilter(Shape queryShape, string fieldName, 
+        public IntersectsPrefixTreeFilter(IShape queryShape, string fieldName, 
                                           SpatialPrefixTree grid, int detailLevel,
                                           int prefixGridScanLevel, bool hasIndexedLeaves)
             : base(queryShape, fieldName, grid, detailLevel, prefixGridScanLevel)

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/PointPrefixTreeFieldCacheProvider.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/PointPrefixTreeFieldCacheProvider.cs b/src/Lucene.Net.Spatial/Prefix/PointPrefixTreeFieldCacheProvider.cs
index 3459cb7..db36767 100644
--- a/src/Lucene.Net.Spatial/Prefix/PointPrefixTreeFieldCacheProvider.cs
+++ b/src/Lucene.Net.Spatial/Prefix/PointPrefixTreeFieldCacheProvider.cs
@@ -33,7 +33,7 @@ namespace Lucene.Net.Spatial.Prefix
     /// can only retrieve the central <see cref="Point">Point</see> of the original Shapes.
     /// </summary>
     /// <lucene.internal></lucene.internal>
-    public class PointPrefixTreeFieldCacheProvider : ShapeFieldCacheProvider<Point>
+    public class PointPrefixTreeFieldCacheProvider : ShapeFieldCacheProvider<IPoint>
     {
         internal readonly SpatialPrefixTree grid; //
 
@@ -45,7 +45,7 @@ namespace Lucene.Net.Spatial.Prefix
 
         private Cell scanCell = null;//re-used in readShape to save GC
 
-        protected internal override Point ReadShape(BytesRef term)
+        protected internal override IPoint ReadShape(BytesRef term)
         {
             scanCell = grid.GetCell(term.Bytes, term.Offset, term.Length, scanCell);
             if (scanCell.Level == grid.MaxLevels && !scanCell.IsLeaf())

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/PrefixTreeStrategy.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/PrefixTreeStrategy.cs b/src/Lucene.Net.Spatial/Prefix/PrefixTreeStrategy.cs
index 5f7c406..003b428 100644
--- a/src/Lucene.Net.Spatial/Prefix/PrefixTreeStrategy.cs
+++ b/src/Lucene.Net.Spatial/Prefix/PrefixTreeStrategy.cs
@@ -146,13 +146,13 @@ namespace Lucene.Net.Spatial.Prefix
             set { distErrPct = value; }
         }
 
-        public override Field[] CreateIndexableFields(Shape shape)
+        public override Field[] CreateIndexableFields(IShape shape)
         {
             double distErr = SpatialArgs.CalcDistanceFromErrPct(shape, distErrPct, ctx);
             return CreateIndexableFields(shape, distErr);
         }
 
-        public virtual Field[] CreateIndexableFields(Shape shape, double distErr)
+        public virtual Field[] CreateIndexableFields(IShape shape, double distErr)
         {
             int detailLevel = grid.GetLevelForDistance(distErr);
             IList<Cell> cells = grid.GetCells(shape, detailLevel, true, simplifyIndexedCells);
@@ -218,7 +218,7 @@ namespace Lucene.Net.Spatial.Prefix
             }
         }
 
-        public override ValueSource MakeDistanceValueSource(Point queryPoint, double multiplier)
+        public override ValueSource MakeDistanceValueSource(IPoint queryPoint, double multiplier)
         {
             var p = provider.GetOrAdd(FieldName, f => new PointPrefixTreeFieldCacheProvider(grid, FieldName, defaultFieldValuesArrayLen));
             return new ShapeFieldCacheDistanceValueSource(ctx, p, queryPoint, multiplier);

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/Tree/Cell.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/Tree/Cell.cs b/src/Lucene.Net.Spatial/Prefix/Tree/Cell.cs
index 319815a..f160688 100644
--- a/src/Lucene.Net.Spatial/Prefix/Tree/Cell.cs
+++ b/src/Lucene.Net.Spatial/Prefix/Tree/Cell.cs
@@ -232,12 +232,12 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         /// </summary>
         /// <param name="shapeFilter">an optional filter for the returned cells.</param>
         /// <returns>A set of cells (no dups), sorted. Not Modifiable.</returns>
-        public virtual ICollection<Cell> GetSubCells(Shape shapeFilter)
+        public virtual ICollection<Cell> GetSubCells(IShape shapeFilter)
         {
             //Note: Higher-performing subclasses might override to consider the shape filter to generate fewer cells.
-            if (shapeFilter is Point)
+            if (shapeFilter is IPoint)
             {
-                Cell subCell = GetSubCell((Point)shapeFilter);
+                Cell subCell = GetSubCell((IPoint)shapeFilter);
                 subCell.shapeRel = SpatialRelation.CONTAINS;
 #if !NET35
                 return new ReadOnlyCollectionBuilder<Cell>(new[] { subCell }).ToReadOnlyCollection();
@@ -281,7 +281,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         /// <p/>
         /// Precondition: this.getShape().relate(p) != DISJOINT.
         /// </remarks>
-        public abstract Cell GetSubCell(Point p);
+        public abstract Cell GetSubCell(IPoint p);
 
         //TODO Cell getSubCell(byte b)
         /// <summary>Gets the cells at the next grid cell level that cover this cell.</summary>
@@ -298,11 +298,11 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         /// </summary>
         public abstract int GetSubCellsSize();
 
-        public abstract Shape GetShape();
+        public abstract IShape GetShape();
 
-        public virtual Point GetCenter()
+        public virtual IPoint GetCenter()
         {
-            return GetShape().GetCenter();
+            return GetShape().Center;
         }
 
         #region Equality overrides

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/Tree/GeohashPrefixTree.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/Tree/GeohashPrefixTree.cs b/src/Lucene.Net.Spatial/Prefix/Tree/GeohashPrefixTree.cs
index 3452948..4ad1fdb 100644
--- a/src/Lucene.Net.Spatial/Prefix/Tree/GeohashPrefixTree.cs
+++ b/src/Lucene.Net.Spatial/Prefix/Tree/GeohashPrefixTree.cs
@@ -38,8 +38,8 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         public GeohashPrefixTree(SpatialContext ctx, int maxLevels)
             : base(ctx, maxLevels)
         {
-            Rectangle bounds = ctx.GetWorldBounds();
-            if (bounds.GetMinX() != -180)
+            IRectangle bounds = ctx.WorldBounds;
+            if (bounds.MinX != -180)
             {
                 throw new ArgumentException("Geohash only supports lat-lon world bounds. Got " +
                                             bounds);
@@ -72,10 +72,9 @@ namespace Lucene.Net.Spatial.Prefix.Tree
             return Math.Max(Math.Min(level, maxLevels), 1);
         }
 
-        protected internal override Cell GetCell(Point p, int level)
+        protected internal override Cell GetCell(IPoint p, int level)
         {
-            return new GhCell(this, GeohashUtils.EncodeLatLon(p.GetY(), p.GetX
-                                                                            (), level));
+            return new GhCell(this, GeohashUtils.EncodeLatLon(p.Y, p.X, level));
         }
 
         //args are lat,lon (y,x)
@@ -117,7 +116,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         internal class GhCell : Cell
         {
             private readonly GeohashPrefixTree _enclosing;
-            private Shape shape;
+            private IShape shape;
 
             internal GhCell(GeohashPrefixTree _enclosing, string token)
                 : base(token)
@@ -155,14 +154,14 @@ namespace Lucene.Net.Spatial.Prefix.Tree
             }
 
             //8x4
-            public override Cell GetSubCell(Point p)
+            public override Cell GetSubCell(IPoint p)
             {
                 return _enclosing.GetCell(p, Level + 1);
             }
 
             //not performant!
             //cache
-            public override Shape GetShape()
+            public override IShape GetShape()
             {
                 if (shape == null)
                 {
@@ -171,7 +170,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
                 return shape;
             }
 
-            public override Point GetCenter()
+            public override IPoint GetCenter()
             {
                 return GeohashUtils.Decode(Geohash, _enclosing.ctx);
             }

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/Tree/QuadPrefixTree.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/Tree/QuadPrefixTree.cs b/src/Lucene.Net.Spatial/Prefix/Tree/QuadPrefixTree.cs
index bde41b1..f99f702 100644
--- a/src/Lucene.Net.Spatial/Prefix/Tree/QuadPrefixTree.cs
+++ b/src/Lucene.Net.Spatial/Prefix/Tree/QuadPrefixTree.cs
@@ -53,16 +53,16 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         private readonly double ymid;
         private readonly double ymin;
 
-        public QuadPrefixTree(SpatialContext ctx, Rectangle bounds, int maxLevels)
+        public QuadPrefixTree(SpatialContext ctx, IRectangle bounds, int maxLevels)
             : base(ctx, maxLevels)
         {
             //not really sure how big this should be
             // side
             // number
-            xmin = bounds.GetMinX();
-            xmax = bounds.GetMaxX();
-            ymin = bounds.GetMinY();
-            ymax = bounds.GetMaxY();
+            xmin = bounds.MinX;
+            xmax = bounds.MaxX;
+            ymin = bounds.MinY;
+            ymax = bounds.MaxY;
             levelW = new double[maxLevels];
             levelH = new double[maxLevels];
             levelS = new int[maxLevels];
@@ -90,7 +90,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         }
 
         public QuadPrefixTree(SpatialContext ctx, int maxLevels)
-            : this(ctx, ctx.GetWorldBounds(), maxLevels)
+            : this(ctx, ctx.WorldBounds, maxLevels)
         {
         }
 
@@ -127,10 +127,10 @@ namespace Lucene.Net.Spatial.Prefix.Tree
             return maxLevels;
         }
 
-        protected internal override Cell GetCell(Point p, int level)
+        protected internal override Cell GetCell(IPoint p, int level)
         {
             IList<Cell> cells = new List<Cell>(1);
-            Build(xmid, ymid, 0, cells, new StringBuilder(), ctx.MakePoint(p.GetX(), p.GetY()), level);
+            Build(xmid, ymid, 0, cells, new StringBuilder(), ctx.MakePoint(p.X, p.Y), level);
             return cells[0];
         }
 
@@ -146,7 +146,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         }
 
         private void Build(double x, double y, int level, IList<Cell> matches, StringBuilder
-                                                                                   str, Shape shape, int maxLevel)
+                                                                                   str, IShape shape, int maxLevel)
         {
             Debug.Assert(str.Length == level);
             double w = levelW[level] / 2;
@@ -165,13 +165,13 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         // if we actually use the range property in the query, this could be useful
         private void CheckBattenberg(char c, double cx, double cy, int level, IList<Cell>
                                                                                   matches, StringBuilder str,
-                                     Shape shape, int maxLevel)
+                                     IShape shape, int maxLevel)
         {
             Debug.Assert(str.Length == level);
             double w = levelW[level] / 2;
             double h = levelH[level] / 2;
             int strlen = str.Length;
-            Rectangle rectangle = ctx.MakeRectangle(cx - w, cx + w, cy - h, cy + h);
+            IRectangle rectangle = ctx.MakeRectangle(cx - w, cx + w, cy - h, cy + h);
             SpatialRelation v = shape.Relate(rectangle);
             if (SpatialRelation.CONTAINS == v)
             {
@@ -232,7 +232,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         internal class QuadCell : Cell
         {
             private readonly QuadPrefixTree _enclosing;
-            private Shape shape;
+            private IShape shape;
 
             public QuadCell(QuadPrefixTree _enclosing, string token)
                 : base(token)
@@ -275,14 +275,14 @@ namespace Lucene.Net.Spatial.Prefix.Tree
                 return 4;
             }
 
-            public override Cell GetSubCell(Point p)
+            public override Cell GetSubCell(IPoint p)
             {
                 return _enclosing.GetCell(p, Level + 1);
             }
 
             //not performant!
             //cache
-            public override Shape GetShape()
+            public override IShape GetShape()
             {
                 if (shape == null)
                 {
@@ -291,7 +291,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
                 return shape;
             }
 
-            private Rectangle MakeShape()
+            private IRectangle MakeShape()
             {
                 string token = TokenString;
                 double xmin = _enclosing.xmin;

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/Tree/SpatialPrefixTree.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/Tree/SpatialPrefixTree.cs b/src/Lucene.Net.Spatial/Prefix/Tree/SpatialPrefixTree.cs
index e13245e..6d97c5c 100644
--- a/src/Lucene.Net.Spatial/Prefix/Tree/SpatialPrefixTree.cs
+++ b/src/Lucene.Net.Spatial/Prefix/Tree/SpatialPrefixTree.cs
@@ -102,10 +102,10 @@ namespace Lucene.Net.Spatial.Prefix.Tree
                 throw new ArgumentException("Level must be in 1 to maxLevels range");
             }
             //TODO cache for each level
-            Cell cell = GetCell(ctx.GetWorldBounds().GetCenter(), level);
-            Rectangle bbox = cell.GetShape().GetBoundingBox();
-            double width = bbox.GetWidth();
-            double height = bbox.GetHeight();
+            Cell cell = GetCell(ctx.WorldBounds.Center, level);
+            IRectangle bbox = cell.GetShape().BoundingBox;
+            double width = bbox.Width;
+            double height = bbox.Height;
             //Use standard cartesian hypotenuse. For geospatial, this answer is larger
             // than the correct one but it's okay to over-estimate.
             return Math.Sqrt(width * width + height * height);
@@ -164,7 +164,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         /// <code>level</code>
         /// .
         /// </summary>
-        protected internal virtual Cell GetCell(Point p, int level)
+        protected internal virtual Cell GetCell(IPoint p, int level)
         {
             return GetCells(p, level, false)[0];
         }
@@ -195,7 +195,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         /// ~20-25% fewer cells.
         /// </param>
         /// <returns>a set of cells (no dups), sorted, immutable, non-null</returns>
-        public virtual IList<Cell> GetCells(Shape shape, int detailLevel
+        public virtual IList<Cell> GetCells(IShape shape, int detailLevel
             , bool inclParents, bool simplify)
         {
             //TODO consider an on-demand iterator -- it won't build up all cells in memory.
@@ -203,9 +203,9 @@ namespace Lucene.Net.Spatial.Prefix.Tree
             {
                 throw new ArgumentException("detailLevel > maxLevels");
             }
-            if (shape is Point)
+            if (shape is IPoint)
             {
-                return GetCells((Point)shape, detailLevel, inclParents);
+                return GetCells((IPoint)shape, detailLevel, inclParents);
             }
             IList<Cell> cells = new List<Cell>(inclParents ? 4096 : 2048);
             RecursiveGetCells(WorldCell, shape, detailLevel, inclParents, simplify, cells
@@ -218,7 +218,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         /// Returns true if cell was added as a leaf. If it wasn't it recursively
         /// descends.
         /// </remarks>
-        private bool RecursiveGetCells(Cell cell, Shape shape, int
+        private bool RecursiveGetCells(Cell cell, IShape shape, int
              detailLevel, bool inclParents, bool simplify, IList<Cell> result)
         {
             if (cell.Level == detailLevel)
@@ -280,7 +280,7 @@ namespace Lucene.Net.Spatial.Prefix.Tree
         /// being fast, as its
         /// called repeatedly when incPlarents is true.
         /// </summary>
-        public virtual IList<Cell> GetCells(Point p, int detailLevel, bool inclParents)
+        public virtual IList<Cell> GetCells(IPoint p, int detailLevel, bool inclParents)
         {
             Cell cell = GetCell(p, detailLevel);
             if (!inclParents)

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Prefix/WithinPrefixTreeFilter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Prefix/WithinPrefixTreeFilter.cs b/src/Lucene.Net.Spatial/Prefix/WithinPrefixTreeFilter.cs
index 62d5104..3081bbe 100644
--- a/src/Lucene.Net.Spatial/Prefix/WithinPrefixTreeFilter.cs
+++ b/src/Lucene.Net.Spatial/Prefix/WithinPrefixTreeFilter.cs
@@ -52,7 +52,7 @@ namespace Lucene.Net.Spatial.Prefix
         //  minimal query buffer by looking in a DocValues cache holding a representative
         //  point of each disjoint component of a document's shape(s).
 
-        private readonly Shape bufferedQueryShape;//if null then the whole world
+        private readonly IShape bufferedQueryShape;//if null then the whole world
 
         /// <summary>
         /// See
@@ -64,7 +64,7 @@ namespace Lucene.Net.Spatial.Prefix
         /// where non-matching documents are looked for so they can be excluded. If
         /// -1 is used then the whole world is examined (a good default for correctness).
         /// </summary>
-        public WithinPrefixTreeFilter(Shape queryShape, string fieldName, SpatialPrefixTree grid, 
+        public WithinPrefixTreeFilter(IShape queryShape, string fieldName, SpatialPrefixTree grid, 
                                       int detailLevel, int prefixGridScanLevel, double queryBuffer)
             : base(queryShape, fieldName, grid, detailLevel, prefixGridScanLevel)
         {
@@ -81,7 +81,7 @@ namespace Lucene.Net.Spatial.Prefix
         /// <summary>
         /// Returns a new shape that is larger than shape by at distErr
         /// </summary>
-        protected virtual Shape BufferShape(Shape shape, double distErr)
+        protected virtual IShape BufferShape(IShape shape, double distErr)
         {
             //TODO move this generic code elsewhere?  Spatial4j?
             if (distErr <= 0)
@@ -89,30 +89,30 @@ namespace Lucene.Net.Spatial.Prefix
                 throw new ArgumentException("distErr must be > 0");
             }
             SpatialContext ctx = grid.SpatialContext;
-            if (shape is Point)
+            if (shape is IPoint)
             {
-                return ctx.MakeCircle((Point)shape, distErr);
+                return ctx.MakeCircle((IPoint)shape, distErr);
             }
             else
             {
-                if (shape is Circle)
+                if (shape is ICircle)
                 {
-                    var circle = (Circle)shape;
-                    double newDist = circle.GetRadius() + distErr;
-                    if (ctx.IsGeo() && newDist > 180)
+                    var circle = (ICircle)shape;
+                    double newDist = circle.Radius + distErr;
+                    if (ctx.IsGeo && newDist > 180)
                     {
                         newDist = 180;
                     }
-                    return ctx.MakeCircle(circle.GetCenter(), newDist);
+                    return ctx.MakeCircle(circle.Center, newDist);
                 }
                 else
                 {
-                    Rectangle bbox = shape.GetBoundingBox();
-                    double newMinX = bbox.GetMinX() - distErr;
-                    double newMaxX = bbox.GetMaxX() + distErr;
-                    double newMinY = bbox.GetMinY() - distErr;
-                    double newMaxY = bbox.GetMaxY() + distErr;
-                    if (ctx.IsGeo())
+                    IRectangle bbox = shape.BoundingBox;
+                    double newMinX = bbox.MinX - distErr;
+                    double newMaxX = bbox.MaxX + distErr;
+                    double newMinY = bbox.MinY - distErr;
+                    double newMaxY = bbox.MaxY + distErr;
+                    if (ctx.IsGeo)
                     {
                         if (newMinY < -90)
                         {
@@ -122,7 +122,7 @@ namespace Lucene.Net.Spatial.Prefix
                         {
                             newMaxY = 90;
                         }
-                        if (newMinY == -90 || newMaxY == 90 || bbox.GetWidth() + 2 * distErr > 360)
+                        if (newMinY == -90 || newMaxY == 90 || bbox.Width + 2 * distErr > 360)
                         {
                             newMinX = -180;
                             newMaxX = 180;
@@ -136,10 +136,10 @@ namespace Lucene.Net.Spatial.Prefix
                     else
                     {
                         //restrict to world bounds
-                        newMinX = Math.Max(newMinX, ctx.GetWorldBounds().GetMinX());
-                        newMaxX = Math.Min(newMaxX, ctx.GetWorldBounds().GetMaxX());
-                        newMinY = Math.Max(newMinY, ctx.GetWorldBounds().GetMinY());
-                        newMaxY = Math.Min(newMaxY, ctx.GetWorldBounds().GetMaxY());
+                        newMinX = Math.Max(newMinX, ctx.WorldBounds.MinX);
+                        newMaxX = Math.Min(newMaxX, ctx.WorldBounds.MaxX);
+                        newMinY = Math.Max(newMinY, ctx.WorldBounds.MinY);
+                        newMaxY = Math.Min(newMaxY, ctx.WorldBounds.MaxY);
                     }
                     return ctx.MakeRectangle(newMinX, newMaxX, newMinY, newMaxY);
                 }

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Query/SpatialArgs.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Query/SpatialArgs.cs b/src/Lucene.Net.Spatial/Query/SpatialArgs.cs
index 11a3114..64e08aa 100644
--- a/src/Lucene.Net.Spatial/Query/SpatialArgs.cs
+++ b/src/Lucene.Net.Spatial/Query/SpatialArgs.cs
@@ -27,7 +27,7 @@ namespace Lucene.Net.Spatial.Query
 
         public SpatialOperation Operation { get; set; }
 
-        public SpatialArgs(SpatialOperation operation, Shape shape)
+        public SpatialArgs(SpatialOperation operation, IShape shape)
         {
             if (operation == null || shape == null)
                 throw new ArgumentException("operation and shape are required");
@@ -44,24 +44,24 @@ namespace Lucene.Net.Spatial.Query
         /// <param name="distErrPct">0 to 0.5</param>
         /// <param name="ctx">Mandatory</param>
         /// <returns>A distance (in degrees).</returns>
-        public static double CalcDistanceFromErrPct(Shape shape, double distErrPct, SpatialContext ctx)
+        public static double CalcDistanceFromErrPct(IShape shape, double distErrPct, SpatialContext ctx)
         {
             if (distErrPct < 0 || distErrPct > 0.5)
             {
                 throw new ArgumentException("distErrPct " + distErrPct + " must be between [0 to 0.5]", "distErrPct");
             }
-            if (distErrPct == 0 || shape is Point)
+            if (distErrPct == 0 || shape is IPoint)
             {
                 return 0;
             }
-            Rectangle bbox = shape.GetBoundingBox();
+            IRectangle bbox = shape.BoundingBox;
 
             //Compute the distance from the center to a corner.  Because the distance
             // to a bottom corner vs a top corner can vary in a geospatial scenario,
             // take the closest one (greater precision).
-            Point ctr = bbox.GetCenter();
-            double y = (ctr.GetY() >= 0 ? bbox.GetMaxY() : bbox.GetMinY());
-            double diagonalDist = ctx.GetDistCalc().Distance(ctr, bbox.GetMaxX(), y);
+            IPoint ctr = bbox.Center;
+            double y = (ctr.Y >= 0 ? bbox.MaxY : bbox.MinY);
+            double diagonalDist = ctx.DistCalc.Distance(ctr, bbox.MaxX, y);
             return diagonalDist * distErrPct;
         }
 
@@ -86,7 +86,7 @@ namespace Lucene.Net.Spatial.Query
         /// </summary>
         public void Validate()
         {
-            if (Operation.IsTargetNeedsArea() && !Shape.HasArea())
+            if (Operation.IsTargetNeedsArea() && !Shape.HasArea)
             {
                 throw new ArgumentException(Operation + " only supports geometry with area");
             }
@@ -106,7 +106,7 @@ namespace Lucene.Net.Spatial.Query
         // Getters & Setters
         //------------------------------------------------
 
-        public Shape Shape { get; set; }
+        public IShape Shape { get; set; }
 
         /// <summary>
         /// A measure of acceptable error of the shape as a fraction. This effectively

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Serialized/SerializedDVStrategy.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Serialized/SerializedDVStrategy.cs b/src/Lucene.Net.Spatial/Serialized/SerializedDVStrategy.cs
index d79c02c..c0692d6 100644
--- a/src/Lucene.Net.Spatial/Serialized/SerializedDVStrategy.cs
+++ b/src/Lucene.Net.Spatial/Serialized/SerializedDVStrategy.cs
@@ -50,12 +50,12 @@ namespace Lucene.Net.Spatial.Serialized
             throw new NotImplementedException();
         }
 
-        public override Field[] CreateIndexableFields(Shape shape)
+        public override Field[] CreateIndexableFields(IShape shape)
         {
             throw new NotImplementedException();
         }
 
-        public override ValueSource MakeDistanceValueSource(Point queryPoint, double multiplier)
+        public override ValueSource MakeDistanceValueSource(IPoint queryPoint, double multiplier)
         {
             throw new NotImplementedException();
         }

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/SpatialStrategy.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/SpatialStrategy.cs b/src/Lucene.Net.Spatial/SpatialStrategy.cs
index 76f827f..f2de112 100644
--- a/src/Lucene.Net.Spatial/SpatialStrategy.cs
+++ b/src/Lucene.Net.Spatial/SpatialStrategy.cs
@@ -82,7 +82,7 @@ namespace Lucene.Net.Spatial
         /// </summary>
         /// <param name="shape"></param>
         /// <returns>Not null nor will it have null elements.</returns>
-        public abstract Field[] CreateIndexableFields(Shape shape);
+        public abstract Field[] CreateIndexableFields(IShape shape);
 
         /// <summary>
         /// See {@link #makeDistanceValueSource(com.spatial4j.core.shape.Point, double)} called with
@@ -90,7 +90,7 @@ namespace Lucene.Net.Spatial
         /// </summary>
         /// <param name="queryPoint"></param>
         /// <returns></returns>
-        public ValueSource MakeDistanceValueSource(Point queryPoint)
+        public ValueSource MakeDistanceValueSource(IPoint queryPoint)
         {
             return MakeDistanceValueSource(queryPoint, 1.0);
         }
@@ -100,7 +100,7 @@ namespace Lucene.Net.Spatial
         /// indexed shape and {@code queryPoint}.  If there are multiple indexed shapes
         /// then the closest one is chosen.
         /// </summary>
-        public abstract ValueSource MakeDistanceValueSource(Point queryPoint, double multiplier);
+        public abstract ValueSource MakeDistanceValueSource(IPoint queryPoint, double multiplier);
 
         /// <summary>
         /// Make a (ConstantScore) Query based principally on {@link org.apache.lucene.spatial.query.SpatialOperation}
@@ -138,14 +138,14 @@ namespace Lucene.Net.Spatial
         /// </summary>
         /// <param name="queryShape"></param>
         /// <returns></returns>
-        public ValueSource MakeRecipDistanceValueSource(Shape queryShape)
+        public ValueSource MakeRecipDistanceValueSource(IShape queryShape)
         {
-            Rectangle bbox = queryShape.GetBoundingBox();
-            double diagonalDist = ctx.GetDistCalc().Distance(
-                ctx.MakePoint(bbox.GetMinX(), bbox.GetMinY()), bbox.GetMaxX(), bbox.GetMaxY());
+            IRectangle bbox = queryShape.BoundingBox;
+            double diagonalDist = ctx.DistCalc.Distance(
+                ctx.MakePoint(bbox.MinX, bbox.MinY), bbox.MaxX, bbox.MaxY);
             double distToEdge = diagonalDist * 0.5;
             float c = (float)distToEdge * 0.1f; //one tenth
-            return new ReciprocalFloatFunction(MakeDistanceValueSource(queryShape.GetCenter()), 1f, c, c);
+            return new ReciprocalFloatFunction(MakeDistanceValueSource(queryShape.Center), 1f, c, c);
         }
 
         public override string ToString()

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Util/ShapeFieldCache.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Util/ShapeFieldCache.cs b/src/Lucene.Net.Spatial/Util/ShapeFieldCache.cs
index 6c27c54..23d04c4 100644
--- a/src/Lucene.Net.Spatial/Util/ShapeFieldCache.cs
+++ b/src/Lucene.Net.Spatial/Util/ShapeFieldCache.cs
@@ -25,7 +25,7 @@ namespace Lucene.Net.Spatial.Util
     /// associated with a given docId
     /// </summary>
     /// <typeparam name="T"></typeparam>
-    public class ShapeFieldCache<T> where T : Shape
+    public class ShapeFieldCache<T> where T : IShape
     {
         private readonly IList<T>[] cache;
         public int defaultLength;

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Util/ShapeFieldCacheDistanceValueSource.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Util/ShapeFieldCacheDistanceValueSource.cs b/src/Lucene.Net.Spatial/Util/ShapeFieldCacheDistanceValueSource.cs
index d1bcb9e..c5f4af7 100644
--- a/src/Lucene.Net.Spatial/Util/ShapeFieldCacheDistanceValueSource.cs
+++ b/src/Lucene.Net.Spatial/Util/ShapeFieldCacheDistanceValueSource.cs
@@ -31,13 +31,13 @@ namespace Lucene.Net.Spatial.Util
     /// </summary>
     public class ShapeFieldCacheDistanceValueSource : ValueSource
     {
-        private readonly ShapeFieldCacheProvider<Point> provider;
+        private readonly ShapeFieldCacheProvider<IPoint> provider;
         private readonly SpatialContext ctx;
-        private readonly Point from;
+        private readonly IPoint from;
         private readonly double multiplier;
 
         public ShapeFieldCacheDistanceValueSource(SpatialContext ctx, 
-            ShapeFieldCacheProvider<Point> provider, Point from, double multiplier)
+            ShapeFieldCacheProvider<IPoint> provider, IPoint from, double multiplier)
         {
             this.ctx = ctx;
             this.from = from;
@@ -48,9 +48,9 @@ namespace Lucene.Net.Spatial.Util
         public class CachedDistanceFunctionValue : FunctionValues
         {
             private readonly ShapeFieldCacheDistanceValueSource enclosingInstance;
-            private readonly ShapeFieldCache<Point> cache;
-            private readonly Point from;
-            private readonly DistanceCalculator calculator;
+            private readonly ShapeFieldCache<IPoint> cache;
+            private readonly IPoint from;
+            private readonly IDistanceCalculator calculator;
             private readonly double nullValue;
 
             public CachedDistanceFunctionValue(AtomicReader reader, ShapeFieldCacheDistanceValueSource enclosingInstance)
@@ -59,8 +59,8 @@ namespace Lucene.Net.Spatial.Util
                 this.enclosingInstance = enclosingInstance;
 
                 from = enclosingInstance.from;
-                calculator = enclosingInstance.ctx.GetDistCalc();
-                nullValue = (enclosingInstance.ctx.IsGeo() ? 180 * enclosingInstance.multiplier : double.MaxValue);
+                calculator = enclosingInstance.ctx.DistCalc;
+                nullValue = (enclosingInstance.ctx.IsGeo ? 180 * enclosingInstance.multiplier : double.MaxValue);
             }
 
             public override float FloatVal(int doc)

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Util/ShapeFieldCacheProvider.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Util/ShapeFieldCacheProvider.cs b/src/Lucene.Net.Spatial/Util/ShapeFieldCacheProvider.cs
index 51827c3..1a78210 100644
--- a/src/Lucene.Net.Spatial/Util/ShapeFieldCacheProvider.cs
+++ b/src/Lucene.Net.Spatial/Util/ShapeFieldCacheProvider.cs
@@ -39,7 +39,7 @@ namespace Lucene.Net.Spatial.Util
     /// </summary>
     /// <lucene.internal></lucene.internal>
     public abstract class ShapeFieldCacheProvider<T>
-        where T : Shape
+        where T : IShape
     {
         //private Logger log = Logger.GetLogger(GetType().FullName);
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Vector/DistanceValueSource.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Vector/DistanceValueSource.cs b/src/Lucene.Net.Spatial/Vector/DistanceValueSource.cs
index d54016f..75785f5 100644
--- a/src/Lucene.Net.Spatial/Vector/DistanceValueSource.cs
+++ b/src/Lucene.Net.Spatial/Vector/DistanceValueSource.cs
@@ -32,11 +32,11 @@ namespace Lucene.Net.Spatial.Vector
     /// </summary>
     public class DistanceValueSource : ValueSource
     {
-        private readonly Point from;
+        private readonly IPoint from;
         private readonly PointVectorStrategy strategy;
         private readonly double multiplier;
 
-        public DistanceValueSource(PointVectorStrategy strategy, Point from, double multiplier)
+        public DistanceValueSource(PointVectorStrategy strategy, IPoint from, double multiplier)
         {
             this.strategy = strategy;
             this.from = from;
@@ -75,9 +75,9 @@ namespace Lucene.Net.Spatial.Vector
 
         public class DistanceFunctionValue : FunctionValues
         {
-            private readonly DistanceCalculator calculator;
+            private readonly IDistanceCalculator calculator;
             private readonly DistanceValueSource enclosingInstance;
-            private readonly Point from;
+            private readonly IPoint from;
             private readonly double nullValue;
             private readonly double multiplier;
 
@@ -95,8 +95,8 @@ namespace Lucene.Net.Spatial.Vector
 
                 from = enclosingInstance.from;
                 multiplier = enclosingInstance.multiplier;
-                calculator = enclosingInstance.strategy.SpatialContext.GetDistCalc();
-                nullValue = (enclosingInstance.strategy.SpatialContext.IsGeo() ? 180 * multiplier : double.MaxValue);
+                calculator = enclosingInstance.strategy.SpatialContext.DistCalc;
+                nullValue = (enclosingInstance.strategy.SpatialContext.IsGeo ? 180 * multiplier : double.MaxValue);
             }
 
             public override float FloatVal(int doc)

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/Vector/PointVectorStrategy.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/Vector/PointVectorStrategy.cs b/src/Lucene.Net.Spatial/Vector/PointVectorStrategy.cs
index b4b2e87..25672b9 100644
--- a/src/Lucene.Net.Spatial/Vector/PointVectorStrategy.cs
+++ b/src/Lucene.Net.Spatial/Vector/PointVectorStrategy.cs
@@ -73,16 +73,16 @@ namespace Lucene.Net.Spatial.Vector
             get { return fieldNameY; }
         }
 
-        public override Field[] CreateIndexableFields(Shape shape)
+        public override Field[] CreateIndexableFields(IShape shape)
         {
-            var point = shape as Point;
+            var point = shape as IPoint;
             if (point != null)
                 return CreateIndexableFields(point);
 
             throw new InvalidOperationException("Can only index Point, not " + shape);
         }
 
-        public Field[] CreateIndexableFields(Point point)
+        public Field[] CreateIndexableFields(IPoint point)
         {
             FieldType doubleFieldType = new FieldType(DoubleField.TYPE_NOT_STORED)
                                             {
@@ -90,13 +90,13 @@ namespace Lucene.Net.Spatial.Vector
                                             };
             var f = new Field[]
                         {
-                            new DoubleField(fieldNameX, point.GetX(), doubleFieldType),
-                            new DoubleField(fieldNameY, point.GetY(), doubleFieldType)
+                            new DoubleField(fieldNameX, point.X, doubleFieldType),
+                            new DoubleField(fieldNameY, point.Y, doubleFieldType)
                         };
             return f;
         }
 
-        public override ValueSource MakeDistanceValueSource(Point queryPoint, double multiplier)
+        public override ValueSource MakeDistanceValueSource(IPoint queryPoint, double multiplier)
         {
             return new DistanceValueSource(this, queryPoint, multiplier);
         }
@@ -108,20 +108,20 @@ namespace Lucene.Net.Spatial.Vector
                                      SpatialOperation.IsWithin))
                 throw new UnsupportedSpatialOperation(args.Operation);
 
-            Shape shape = args.Shape;
-            var bbox = shape as Rectangle;
+            IShape shape = args.Shape;
+            var bbox = shape as IRectangle;
             if (bbox != null)
                 return new ConstantScoreQuery(new QueryWrapperFilter(MakeWithin(bbox)));
 
-            var circle = shape as Circle;
+            var circle = shape as ICircle;
             if (circle != null)
             {
-                bbox = circle.GetBoundingBox();
+                bbox = circle.BoundingBox;
                 var vsf = new ValueSourceFilter(
                     new QueryWrapperFilter(MakeWithin(bbox)),
-                    MakeDistanceValueSource(circle.GetCenter()),
+                    MakeDistanceValueSource(circle.Center),
                     0,
-                    circle.GetRadius());
+                    circle.Radius);
                 return new ConstantScoreQuery(vsf);
             }
 
@@ -134,12 +134,12 @@ namespace Lucene.Net.Spatial.Vector
         {
             // For starters, just limit the bbox
             var shape = args.Shape;
-            if (!(shape is Rectangle || shape is Circle))
+            if (!(shape is IRectangle || shape is ICircle))
                 throw new InvalidOperationException("Only Rectangles and Circles are currently supported, found ["
                     + shape.GetType().Name + "]");//TODO
 
-            Rectangle bbox = shape.GetBoundingBox();
-            if (bbox.GetCrossesDateLine())
+            IRectangle bbox = shape.BoundingBox;
+            if (bbox.CrossesDateLine)
             {
                 throw new InvalidOperationException("Crossing dateline not yet supported");
             }
@@ -160,14 +160,14 @@ namespace Lucene.Net.Spatial.Vector
               SpatialOperation.IsWithin))
             {
                 spatial = MakeWithin(bbox);
-                var circle = args.Shape as Circle;
+                var circle = args.Shape as ICircle;
                 if (circle != null)
                 {
                     // Make the ValueSource
-                    valueSource = MakeDistanceValueSource(shape.GetCenter());
+                    valueSource = MakeDistanceValueSource(shape.Center);
 
                     var vsf = new ValueSourceFilter(
-                        new QueryWrapperFilter(spatial), valueSource, 0, circle.GetRadius());
+                        new QueryWrapperFilter(spatial), valueSource, 0, circle.Radius);
 
                     spatial = new FilteredQuery(new MatchAllDocsQuery(), vsf);
                 }
@@ -188,7 +188,7 @@ namespace Lucene.Net.Spatial.Vector
             }
             else
             {
-                valueSource = MakeDistanceValueSource(shape.GetCenter());
+                valueSource = MakeDistanceValueSource(shape.Center);
             }
             Search.Query spatialRankingQuery = new FunctionQuery(valueSource);
             var bq = new BooleanQuery();
@@ -213,22 +213,22 @@ namespace Lucene.Net.Spatial.Vector
         /// Constructs a query to retrieve documents that fully contain the input envelope.
         /// </summary>
         /// <param name="bbox"></param>
-        private Search.Query MakeWithin(Rectangle bbox)
+        private Search.Query MakeWithin(IRectangle bbox)
         {
             var bq = new BooleanQuery();
             const BooleanClause.Occur MUST = BooleanClause.Occur.MUST;
-            if (bbox.GetCrossesDateLine())
+            if (bbox.CrossesDateLine)
             {
                 //use null as performance trick since no data will be beyond the world bounds
-                bq.Add(RangeQuery(fieldNameX, null /*-180*/, bbox.GetMaxX()), BooleanClause.Occur.SHOULD);
-                bq.Add(RangeQuery(fieldNameX, bbox.GetMinX(), null /*+180*/), BooleanClause.Occur.SHOULD);
+                bq.Add(RangeQuery(fieldNameX, null /*-180*/, bbox.MaxX), BooleanClause.Occur.SHOULD);
+                bq.Add(RangeQuery(fieldNameX, bbox.MinX, null /*+180*/), BooleanClause.Occur.SHOULD);
                 bq.MinimumNumberShouldMatch = 1; //must match at least one of the SHOULD
             }
             else
             {
-                bq.Add(RangeQuery(fieldNameX, bbox.GetMinX(), bbox.GetMaxX()), MUST);
+                bq.Add(RangeQuery(fieldNameX, bbox.MinX, bbox.MaxX), MUST);
             }
-            bq.Add(RangeQuery(fieldNameY, bbox.GetMinY(), bbox.GetMaxY()), MUST);
+            bq.Add(RangeQuery(fieldNameY, bbox.MinY, bbox.MaxY), MUST);
             return bq;
         }
 
@@ -247,12 +247,12 @@ namespace Lucene.Net.Spatial.Vector
         /// Constructs a query to retrieve documents that fully contain the input envelope.
         /// </summary>
         /// <param name="bbox"></param>
-        private Search.Query MakeDisjoint(Rectangle bbox)
+        private Search.Query MakeDisjoint(IRectangle bbox)
         {
-            if (bbox.GetCrossesDateLine())
+            if (bbox.CrossesDateLine)
                 throw new InvalidOperationException("MakeDisjoint doesn't handle dateline cross");
-            Search.Query qX = RangeQuery(fieldNameX, bbox.GetMinX(), bbox.GetMaxX());
-            Search.Query qY = RangeQuery(fieldNameY, bbox.GetMinY(), bbox.GetMaxY());
+            Search.Query qX = RangeQuery(fieldNameX, bbox.MinX, bbox.MaxX);
+            Search.Query qY = RangeQuery(fieldNameY, bbox.MinY, bbox.MaxY);
             var bq = new BooleanQuery { { qX, BooleanClause.Occur.MUST_NOT }, { qY, BooleanClause.Occur.MUST_NOT } };
             return bq;
         }

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d5547927/src/Lucene.Net.Spatial/packages.config
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Spatial/packages.config b/src/Lucene.Net.Spatial/packages.config
index 27237fc..16ef20c 100644
--- a/src/Lucene.Net.Spatial/packages.config
+++ b/src/Lucene.Net.Spatial/packages.config
@@ -1,4 +1,6 @@
 \ufeff<?xml version="1.0" encoding="utf-8"?>
 <packages>
-  <package id="Spatial4n.Core" version="0.3" targetFramework="net451" />
+  <!--<package id="Spatial4n.Core.NTS" version="0.4.1" targetFramework="net451" />-->
+  <package id="GeoAPI" version="1.7.4" targetFramework="net451" />
+  <package id="NetTopologySuite" version="1.14" targetFramework="net451" />
 </packages>
\ No newline at end of file