ThinkGeo.com    |     Documentation    |     Premium Support

Oracle Spatial data not shows on map

hello, i'm having another problem.


i've the following code:


 



    Private Sub btnOracle_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOracle.Click
        OSpatialLayer(txttable.Text, txtInstanciaOracle.Text, txtUsername.Text, txtPassword.Text)
    End Sub


    Private Sub OSpatialLayer(ByVal tablename As String, ByVal ServerName As String, ByVal ServerUsername As String, ByVal serverPassword As String)
        Dim connectString As String = "User ID=" & ServerUsername & ";Password=" & serverPassword & ";Data Source=" & ServerName & ";"
        Dim oracleLayer As New OracleFeatureLayer(connectString, tablename, "id1")
        oracleLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.GetRandomGeoColor(RandomColorType.All), GeoColor.GetRandomGeoColor(RandomColorType.All), 1000, LineDashStyle.Solid)
        Dim proj4Projection As New Proj4Projection()
        proj4Projection.InternalProjectionParametersString = proj4Projection.GetEpsgParametersString(20791) '  "+proj=utm +zone=26 +ellps=intl +units=m +no_defs"
        proj4Projection.ExternalProjectionParametersString = proj4Projection.GetGoogleMapParametersString()
        oracleLayer.FeatureSource.Projection = proj4Projection
     
        Dim qry = From ols In Me.Map1.CustomOverlays Where ols.Id = "oracleoverlay"
        Dim lineOverlay As LayerOverlay
        If qry.Count > 0 Then
            lineOverlay = Me.Map1.CustomOverlays("oracleoverlay")
        Else
            lineOverlay = New LayerOverlay("oracleoverlay", False, TileType.SingleTile)
            lineOverlay.TransitionEffect = TransitionEffect.None
            Me.Map1.CustomOverlays.Add(lineOverlay)
        End If
        lineOverlay.Layers.Add("oracleoverlaylayer", oracleLayer)
        oracleLayer.Open()
        Me.Map1.CurrentExtent = oracleLayer.GetBoundingBox()
    End Sub

After oracleLayer.Open() is called i can do oracleLayer.QueryTools.GetCount() and oracleLayer.QueryTools.GetColumns() and both retrieves good results. But the data doesn't appear on map.


and the oracleLayer.GetBoundingBox() is giving some strange bounding like in 0.01 values :(


I can see the data with uDig and was able to create a WMS using MapServer, but not with MapSuite Webedition.


 


 



Rui, 
  
 Thanks for you post. 
  
 I think the problem is caused that you set the wrong MapUnit. The default value is DecimalDegree, but you use projection, so I suggest you to set it to Meter: 
 Me.Map1.MapUnit = GeographyUnit.Meter; 
  
 Please let me know if you have more question. 
  
 James

Hi Rui,



I notice that you just have set style for ZoomLevel01, not for any other ZoomLevels. So that’s the reason why your data doesn’t appear on the map. ZoomLevels define the situation in which we want to display them.  PresetZoomLevels has a very useful property called "ZoomLevel.ApplyUntilZoomLevel", which you can very easily use to extend your ZoomLevels. Let's say you want a particular Style to be visible at ZoomLevel03 through ZoomLevel10. To make that work, we can simply code as follows:

worldLayer.ZoomLevelSet.ZoomLevel03.DefaultAreaStyle = AreaStyles.Country1;
worldLayer.ZoomLevelSet.ZoomLevel03.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level10;



As for your second question about strange BoundingBox value, maybe it’s the same problem with that mentioned above.



Thanks,

Howard



Thank you all for the answers.


I've the Unit defined on the ASPX.


 < cc1:Map ID="Map1" runat="server" Height="480px" Width="800px" MapUnit="Meter"></ cc1:Map >


and i can load shape files in the same map.


i guess the problem is with the projections, but can't figure out what is the problem.


 



Now i've created a fully new Database.


Imported a shape file into that database using Oracle MapBuilder.


I can preview it in the Oracle MapBuilder and with uDig (O.S.)


And now the 


oracleLayer.GetBoundingBox() -> raises exception


oracleLayer.QueryTools.GetColumns() -> 0 columns. (is wrong)


oracleLayer.QueryTools.GetCount() -> 4 records (is right!)


no output into Map.


 Exception on: oracleLayer.GetBoundingBox()


System.Data.OracleClient.OracleException was unhandled

  Message="ORA-01403: no data found\nORA-06512: at line 1\n"

  Source="System.Data.OracleClient"

  ErrorCode=-2146232008

  Code=1403

  StackTrace:

       at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)

       at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)

       at System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor)

       at System.Data.OracleClient.OracleCommand.ExecuteNonQuery()

       at ThinkGeo.MapSuite.Core.OracleFeatureSource.GetBoundingBoxCore()

       at ThinkGeo.MapSuite.Core.FeatureSource.GetBoundingBox()

       at ThinkGeo.MapSuite.Core.FeatureLayer.GetBoundingBoxCore()

       at ThinkGeo.MapSuite.Core.Layer.GetBoundingBox()

  InnerException: 


 



Doing:


oracleLayer.Open()

oracleLayer.GetFirstGeometryType()


Get:


    System.Data.OracleClient.OracleException was unhandled

  Message="ORA-01747: invalid user.table.column, table.column, or column specification\n"

  Source="System.Data.OracleClient"

  ErrorCode=-2146232008

  Code=1747

  StackTrace:

       at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)

       at System.Data.OracleClient.OracleCommand.Prepare()

       at ThinkGeo.MapSuite.Core.OracleFeatureSource.GetFirstGeometryType()

       at ThinkGeo.MapSuite.Core.OracleFeatureLayer.GetFirstGeometryType()

  InnerException: 



Found the problem :D 
 i had the schema name before tablename. 
 tablename = “THINKGEO.GISTABLE” but should be tablename=“GISTABLE”, 
 now i’m still having problems with the database wich features were added throw Geomedia Professional. :( 
 getting “ORA-00936: missing expression” in the tiles 


Rui, 



Great; in Orale, it can use duplicate table name with deffirent schema which may cause an issue which cannot be easily found. We may need more time on the next issue. Sorry for the inconvenience.



Let me kow if you have more queries. 



Thanks for sharing. 

Howard



hello once again!


When executing the following on Oracle table created throw Geomedia Professional it gives one error. Could it be related with my problem?


Query (think it's related to  GetFirstGeometryType() on OracleFeatureSource)


select tableName.Geometry.GET_WKB() from ADM_CONCELHOS tableName WHERE ROWNUM <= 1


 it gives the following error when i execute it in SQLDeveloper:


ORA-13199: 3D geometries are not supported by geometry WKB/WKT generation.

ORA-06512: at "MDSYS.MD", line 1723

ORA-06512: at "MDSYS.MDERR", line 17

ORA-06512: at "MDSYS.SDO_UTIL", line 2415

ORA-06512: at "MDSYS.SDO_GEOMETRY", line 30

13199. 00000 -  "%s"

*Cause:    This is an internal error.

*Action:   Contact Oracle Support Services.


Could it be related?


 


 


 


 











Rui,


 


Sorry, we cannot recreate your issue with our current data. We found there may be two possibilities to cause your issue, hope it helps.


 


1, here is an article which you can find at oracle.com/technology/so...hp2sdo.txt says:


 


After the layer is loaded, the final requirement (for polygon layers only)


is to migrate the layer to the 8.1.6 and higher format (fixes the SDO_GTYPES 


and etypes as well as all polygon rotation and ordering requirements).  


After logging into SQL*Plus:


 


If you are using Oracle8i, type:


EXECUTE SDO_MIGRATE.FROM_815_TO_81X('STATES');


 


If you are using Oracle9i or higher, type:


EXECUTE SDO_MIGRATE.TO_CURRENT('STATES','GEOM');


 


2, 3D data may be another issue on your app. Here is another article to convert your data.


forums.oracle.com/forums/thr...p;#2450899


 


Please let us know if you have more queries.


 


Thanks,


Howard




OK, i keep on investigating this…

Rui, 
  
 You are so welcome. Please feel free to let us know if you have more queries. 
  
 Thanks, 
  
 Johnny