|
阅读:1614回复:4
为什么不一样的标,生成的点竟然在同一个位置?
<P>请教大家一个问题,我想把经纬度的两个坐标,生成点,有什么需要特别设置的地方吗? 比如点113.7833333,40.2833333和点113.8833333,40.0500000生成的两个点是一个位置,这是什么原因呢? </P>
|
|
|
1楼#
发布于:2007-03-26 21:51
没什么特别设置,最好把你代码贴出来看看
|
|
|
|
2楼#
发布于:2007-03-27 09:11
<P>Private Sub Command3_Click()<BR>On Error GoTo ErrorHandler:</P>
<P> filename = "PointLayer"<BR> Set pFeatureWorkspace = SDEConnect("xuye", "5151", "DB_GWS_SDE", "sde", "sde")<BR> CreateFeature pFeatureWorkspace, filename, esriGeometryType.esriGeometryPoint<BR> MsgBox "Create Layer OK"<BR> <BR> Set pClass = pFeatureWorkspace.OpenFeatureClass(filename)</P> <P> '''''''''''''''''''''''''''''''''''''<BR> Set pLayer = New FeatureLayer<BR> Set pLayer.FeatureClass = pClass<BR> Set pWorkspaceEdit = pFeatureWorkspace <BR>''''''''''''''''''''''''''''''开始编辑<BR> pWorkspaceEdit.StartEditing True<BR>'''''''''''''''''''''''''''''''<BR> <BR>''''''''''''''''''''''''''''''''循环添加点<BR> ReadPoint App.Path ; "\output\ToPoint.txt", esriGeometryType.esriGeometryPoint<BR> <BR> Dim i As Integer<BR> For i = 0 To UBound(X) - 1<BR> Set pFeature = pClass.CreateFeature<BR> Set pPoint = New Point<BR> pPoint.X = CDbl(Trim(X(i)))<BR> pPoint.Y = CDbl(Trim(Y(i)))<BR> <BR> Set pFeature.Shape = pPoint<BR> pFeature.Store<BR> Next<BR> MsgBox "create Point OK"<BR> <BR> Dim m_pFeatureLayer As IFeatureLayer<BR> Set m_pFeatureLayer = New FeatureLayer<BR> Set m_pFeatureLayer.FeatureClass = pClass<BR> m_pFeatureLayer.Name = pClass.AliasName<BR> '装载要素层<BR> MapControl1.ClearLayers<BR> MapControl1.AddLayer m_pFeatureLayer<BR> MsgBox "Load Layer OK"<BR>ErrorHandler:<BR> MsgBox Err.Description<BR>End Sub<BR></P> <P>'创建新图层</P> <P>Public Sub CreateFeature(pFeatureWorkspace As IFeatureWorkspace, className As String, geomType As esriGeometryType)</P> <P>Dim pFields As IFields<BR>Dim pFieldsEdit As IFieldsEdit<BR>Set pFields = New esriGeoDatabase.Fields<BR>Set pFieldsEdit = pFields</P> <P>Dim pField As IField<BR>Dim pFieldEdit As IFieldEdit</P> <P>' 添加一个几何字段<BR>Set pField = New esriGeoDatabase.Field<BR>Set pFieldEdit = pField<BR>pFieldEdit.Name = "Shape"<BR>pFieldEdit.Type = esriFieldTypeGeometry</P> <P>Dim pGeomDef As IGeometryDef<BR>Dim pGeomDefEdit As IGeometryDefEdit</P> <P>Dim pSR As ISpatialReference<BR>Set pSR = New UnknownCoordinateSystem</P> <P>Set pGeomDef = New GeometryDef<BR>Set pGeomDefEdit = pGeomDef<BR>With pGeomDefEdit<BR> .GeometryType = geomType<BR> .GridCount = 2<BR> .GridSize(0) = 10000<BR> .AvgNumPoints = 0<BR> Set .SpatialReference = pSR<BR>End With</P> <P><BR>'在创建孤立的要素类时必须指定<BR> <BR>Set pFieldEdit.GeometryDef = pGeomDef<BR>pFieldsEdit.AddField pField</P> <P>Set pField = New esriGeoDatabase.Field<BR>Set pFieldEdit = pField<BR>With pFieldEdit<BR>.length = 30<BR>.Name = "FID"<BR>.Type = esriFieldTypeOID<BR>End With<BR>pFieldsEdit.AddField pField</P> <P>Set pField = New esriGeoDatabase.Field<BR>Set pFieldEdit = pField<BR>With pFieldEdit<BR>.length = 30<BR>.Name = "ID"<BR>.Type = esriFieldTypeString<BR>End With<BR>pFieldsEdit.AddField pField</P> <P>'创建要素类<BR>Dim pOutFeatureClass As IFeatureClass<BR>Set pOutFeatureClass = pFeatureWorkspace.CreateFeatureClass(className, pFieldsEdit, Nothing, Nothing, esriFTSimple, "shape", "")<BR>End Sub</P> <P>经纬度的点集生成的图层</P> <P><IMG src="http://bbs.esrichina-bj.cn/ESRI/attachments/forumid_26/snap_FYyfhvJwx9Pg.gif" border=0></P> <P>直角坐标生成的图层</P> <P><IMG src="http://bbs.esrichina-bj.cn/ESRI/attachments/forumid_26/snap1_V8hpab8fHncb.gif" border=0></P> <P>它们的数据源是相同的,经纬度的点集生成的图明显就不对,好多点都是叠在一起的</P> |
|
|
3楼#
发布于:2007-04-10 21:30
我觉得没有什么不对,可能是它们的坐标比较接近,在一定的比例下在屏幕上显示起来好像叠在一起,你放大看一下试试
|
|
|
4楼#
发布于:2007-04-11 14:09
<P>可能是你数据转换过程中的问题;</P>
<P>在vb中将前台录入的文本数据用cdbl转换为double类型存储,在转换大数时会发生数据精度溢出的问题 <BR>如cdbl(99999999999999.999999)后数据变为了100000000000000.000000</P> |
|
|