Provider 模式 (如 ASP.NET 2.0、DNN) 定義統一介面,由具體實現支援不同資料源。SharpMap 亦採此架構,Layer.DataSource 型別為 IProvider,使同一圖層邏輯可對接 Shapefile、PostGIS、SQL Server 等多種資料格式。

核心成員包含:
SRID (空間參考 ID)、FeatureCount、BoundingBox (資料範圍)。Open()/Close()、GetFeaturesInView(BoundingBox bbox) (視窗查詢)、ExecuteIntersectionQuery (空間相交查詢)、GetFeature(uint RowID) (按 OID 取單一要素)。string connStr = "Server=127.0.0.1;Port=5432;UserId=postgres;Password=password;Database=myGisDb;";
myLayer.DataSource = new SharpMap.Providers.PostGIS(connStr, "myTable", "the_geom", 32632);
系統內部 (渲染、查詢、分析) 僅依賴 IProvider,具體資料存取 (Shapefile 解析、PostGIS SQL) 封裝於各 Provider 實現中,符合開放封閉原則。
web.config 設定與反射動態載入,無需重新編譯即可切換 Provider。所有 Provider 最終將資料轉換為內部統一的幾何物件 (Point、LineString、Polygon 等),依循 OGC Simple Feature 規範。SharpMap 參考 NTS (NetTopologySuite,JTS 的 .NET 移植版) 實現幾何運算與拓撲關係。
SharpMap Provider 目前僅定義資料讀取介面。理論上可擴展支援編輯,但空間資料編輯涉及拓撲一致性、交易回滾、並發控制等極高複雜度。主流商業 GIS (如 SuperMap) 亦多僅支援異構資料唯讀存取,編輯功能通常限於原生格式。
SharpMap 的 Provider 架構清晰分離資料存取與業務邏輯,支援多源空間資料整合。理解 IProvider 契約與幾何資料標準化流程,是擴展自訂資料源或進行效能優化的基礎。