النتائج 1 إلى 3 من 3
  1. #1
    تاريخ التسجيل
    Oct 2008
    الدولة
    arab state
    المشاركات
    701

    سؤال لأهل البرمجة :ما هي بارامترات تخزين قوس او دائرة ضمن قواعد البيانات

    ..السلام عليكم :
    سؤالي :
    - ما هي الآلية البرمجية التي يقوم عليها برنامج arcinfo ونفس الشي بالنسبة oracle spatial وذلك عندما نقوم برسم قوس بواسطة
    اداة الرسم sketch tool واختيار end point arc tool التي ترسم قوس بواسطة نقطتين فقط :نقطة بداية ونقطة نهاية ...
    اي انه لدينا 2vertices فقط ..فهل آلية رسم القوس ضمن برنامج arcinfo له 3 بارامترات :
    1- نقطة بداية
    2- نقطة نهاية
    3- curve اي درجة وجهة الانحناء ...
    ونفس الشي بالنسبة للدائرة ....
    وهكذا ايضا لوحظ في oracle spatial ..
    ---
    لكن عندما نقوم بتصدير هذا القوس او الدائرة الى شيب فايل ومن ثم اضافة هذا الشيب فايل لواجهة عمل arcmap نلاحظ ان القوس مؤلف من مئات ال vertex ....وايضا عندما نفتح القوس بواسطة الاوتوكاد نجده ايضا مؤلف من مئات ال vertex ...
    ..............
    فهل لتخزين قوس ضمن قاعدة البيانات يحتاج الى الثلاث بارامترات انفة الذكر ....ام انه لحفظ القوس فان هنالك تلك المئات من vertex المتقاربة مع بعضها البعض والتي شكلت القوس ...
    فأيهما صحيح برمجيا .......
    .................
    مثال لزيادة التوضيح ...عندما صدرنا الاقواس الى برامج gps بدت الاقواس بطريقة ذات اضلاع غير متناسقة ...مما نفهم ان برنامج arcinfo له طريقته الخاصة في تخزين القوس ...فربما هي طريقة ظاهرية فقط حيث ظاهريا نملك tow vertices ..أما واقعيا فان القوس هو مئات ال vertex المشكلة للقوس ...
    ..........
    أرجوا التوضيح والمشاركة والمناقشة ...
    صلى الله عليك ياسيدي يارسول الله فصلوا عليه
  2. #2

    رد : سؤال لأهل البرمجة :ما هي بارامترات تخزين قوس او دائرة ضمن قواعد البيانات

    السلام عليكم

    هناك طرق لاضافة ادوات رسم جديدة
    عن طريق
    customize ----> advance edit tools ----> Command
    او

    customize ----> editor----> Command
    ام لغات البرمجة
    visual basic
    c++
    ام اللغات في arcgis
    ArcObjects
    python
    http://www.python.org/doc/newstyle.html
    ام بالنسبة الى الدائرة
    مركز الدائرة ونصف القطر هو امر مشترك
    وكل برنامج بظهر الدائرة باسلوبه الخاص
  3. #3

    رد : سؤال لأهل البرمجة :ما هي بارامترات تخزين قوس او دائرة ضمن قواعد البيانات

    اولا هناك طرق مختلفة لرسم المنحنايات وتختلف في نوع وعدد البراميتر حسب المنهجية المستخدم في الرسم فمثلا لو تم استخدام:

    Vb.net for windows Application:

    this example do that:

    Imports System
    Imports System.Windows.Forms
    Imports System.Drawing
    Imports System.Drawing.Drawing2D


    Public Class MainClass

    Shared Sub Main()
    Dim form1 As Form1 = new Form1
    Application.Run(form1)
    End Sub

    End Class



    Public Class Form1
    Inherits System.Windows.Forms.Form

    #Region " Windows Form Designer generated code "

    Public Sub New()
    MyBase.New()

    'This call is required by the Windows Form Designer.
    InitializeComponent()

    'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
    If disposing Then
    If Not (components Is Nothing) Then
    components.Dispose()
    End If
    End If
    MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.
    'Do not modify it using the code editor.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    '
    'Form1
    '
    Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
    Me.ClientSize = New System.Drawing.Size(504, 629)
    Me.Name = "Form1"
    Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScree n
    Me.Text = "Form1"

    End Sub

    #End Region

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    Dim R1 As New Rectangle(10, 10, 40, 40)

    e.Graphics.SmoothingMode = SmoothingMode.HighQuality

    'Use first rect to bound arc
    e.Graphics.ResetTransform()
    e.Graphics.TranslateTransform(200.0F, 50.0F)
    e.Graphics.DrawArc(Pens.DarkBlue, R1, 40, 160)


    End Sub


    End Class


    /////////////////////////////////////////////////////////////////////////////////



    وهذا المثال الكامل لرسم الارك باستخدام ثلاثة نقاط for ArcInfo:

    ArcINFO::::::::::::::::::::::::::




    Private Sub UIToolControl1_MouseDown(ByVal button As Long, ByVal shift As Long, ByVal X As Long, ByVal Y As Long)

    Dim pMxDoc As IMxDocument
    Set pMxDoc = ThisDocument

    Dim pMap As IMap
    Set pMap = pMxDoc.FocusMap

    Dim pEnumFeat As IEnumFeature
    Set pEnumFeat = pMap.FeatureSelection

    pEnumFeat.Reset

    Dim pFeat As IFeature
    Set pFeat = pEnumFeat.Next

    Do Until pFeat Is Nothing

    Dim pFeatClass As IFeatureClass
    Set pFeatClass = pFeat.Class

    If pFeatClass.ShapeType = esriGeometryPolyline Then
    Dim pSegColl As ISegmentCollection
    Set pSegColl = pFeat.Shape

    MsgBox pSegColl.SegmentCount, vbOKOnly, "SEGMENT"

    Dim pSegment As ISegment
    Set pSegment = pSegColl.Segment(0)

    Dim pFrmPoint As IPoint
    Dim pToPoint As IPoint


    Set pFrmPoint = pSegment.FromPoint

    Dim pMidPoint As IPoint
    Set pMidPoint = pFrmPoint

    Dim pTargetFeatClass As IFeatureClass
    Set pTargetFeatClass = pFeatClass

    End If

    If pFeatClass.ShapeType = esriGeometryPolygon Then

    Set pSegColl = pFeat.Shape

    'I get here the last segment of the polygon(square)
    Set pSegment = pSegColl.Segment(3)

    Set pFrmPoint = pSegment.FromPoint
    Set pToPoint = pSegment.ToPoint

    End If

    Set pFeat = pEnumFeat.Next

    Loop

    Dim pCircularFeat As IFeature
    Set pCircularFeat = New Feature
    Set pCircularFeat = pTargetFeatClass.CreateFeature

    Dim pSeg As ISegment
    Dim pZaware As IZAware

    Set pSeg = CreateCArcThreePoint(pFrmPoint, pMidPoint, pToPoint)
    Set pSegColl = New Polyline

    Set pZaware = pSegColl
    pZaware.ZAware = True
    pSegColl.AddSegment pSeg

    Set pCircularFeat.Shape = pSegColl
    pCircularFeat.Store

    End Sub

    Public Function CreateCArcThreePoint(FromPoint As IPoint, MidPoint As IPoint, ToPoint As IPoint) As ICircularArc

    Dim ConstCArc As IConstructCircularArc
    Set CreateCArcThreePoint = New CircularArc
    Set ConstCArc = CreateCArcThreePoint
    ConstCArc.ConstructThreePoints FromPoint, MidPoint, ToPoint, True

    End Function
    م.نجد جمال الحناحنه

    مهندس جيوماتيكس

    Sr.GIS Engineer
    Pre-Sales GIS Engineer




ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •