ThinkGeo.com    |     Documentation    |     Premium Support

Querying for Features by Location, and Column Values

 I have loaded OpenStreetMap shape files into SQL Server 2008.


I have implemented an OSMFeatureLayer and OSMFeatureSource which extend MsSql2008FeatureLayer and  MsSql2008FeatureSource respectively.


In the OSMFeatureSource I have overridden the GetFeaturesForDrawingCore to intercept the feature request and query it by not only position, but also for values in a specific column.


I see many useful functions for getting features by position.  I also see function for getting features by a column value.  Where are methods that will let me get by position and value.


For instance give me all Features in this bounding box, where [Type] = "Hospital"


Right now I am using  base.GetFeaturesForDrawingCore passing in the column I want returned, and doing a for each loop to find the values that I want.  This seems very inefficient, when SQL Server is so good at queries.


What am I missing.


Thanks,

Brian


 



Brain,


Thanks for your post and welcome you to ThinkGeo MapSuite discussion forum.


I guess that the event ExecutingSqlStatement can probably satisfy your requirement, following code snippet which is part of my previous ticket sample shows you how to achieve this by using this event:



void TicketForm_ExecutingSqlStatement(object sender, ExecutingSqlStatementMsSql2008FeatureSourceEventArgs e)
        {
            if (e.ExecutingSqlStatementType == ExecutingSqlStatementType.GetFeaturesInsideBoundingBox)
            {
                string sqlStatement = e.SqlStatement;

                e.SqlStatement = sqlStatement.TrimEnd(';') + " and ID in (select ID From States where POP90_SQMI>'200')";
            }
        }

Any more questions just feel free to let me know.


Thanks.


Yale

 



Thanks for the info.  That should help.

Brain, 
  
 You are welcome; thanks for letting me know the status. 
  
 Any more questions just feel free to let me know. 
  
 Thanks. 
  
 Yale