متدهای STCurveToLine و CurveToLineWithTolerance
این دو متد را شما می توانید برای تبدیل منحنی به شکل تقریبا معادل خط مستقیم استفاده کنید. این برای سازگاری با نسخه های قبلی از SQL سرور و دیگر پلتفرم هایی است که منحنی را پشتیبانی نمی کنند.
متد STCurveToLine تبدیل یک منحنی به یک رشته خط را بوسیله تعداد بسیاری از قطعه خط ها و نقاط که به بهترین شکل منحنی اصلی را تقریب می زنند انجام میدهد. تکنیک آن مشابه آنچیزی است که برای STBufferگفته شد، که در آن بسیاری از خطوط مستقیم کوتاه در یک مجموعه از نقاط برای شبیه سازی منحنی به هم متصل شده اند و همانطور که در آن بحث توضیح داده شد ، رشته خط حاصل به طور قابل توجهی نیاز به ذخیره سازی بیشتری نسبت به منحنی اصلی دارد. برای مصالحه بین وفاداری به سیستم قبلی و ذخیره سازی زیاد ، متد CurveToLineWithTolerance پارامترهای “آستانه” را می پذیرد تا رشته خطی تولید کند که مصرف فضای ذخیره سازی آن کمتر از رشته خط تولید شده توسط STCurveToLine است کد زیر استفاده از هر دو متد را برای تبدیل شکل دایره مشابه مثال STNumCurves و STCurveN قبلی به رشته خط نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
-- Create a full circle shape (two connected semi-circles) DECLARE @C geometry = 'CIRCULARSTRING(0 4, 4 0, 8 4, 4 8, 0 4)' -- Render as curved shape SELECT Shape = @C, ShapeWKT = @C.ToString(), ShapeLen = DATALENGTH(@C), Points = @C.STNumPoints() -- Convert to lines (much larger, many more points) SELECT Shape = @C.STCurveToLine(), ShapeWKT = @C.STCurveToLine().ToString(), ShapeLen = DATALENGTH(@C.STCurveToLine()), Points = @C.STCurveToLine().STNumPoints() -- Convert to lines with tolerance (not as much larger, not as many more points) SELECT Shape = @C.CurveToLineWithTolerance(0.1, 0), ShapeWKT = @C.CurveToLineWithTolerance(0.1, 0).ToString(), ShapeLen = DATALENGTH(@C.CurveToLineWithTolerance(0.1, 0)), Points = @C.CurveToLineWithTolerance(0.1, 0).STNumPoints() |
نتایج پرس و جو نشان می دهد که مصرف دایره اصلی فقط 112 بایت است و 5 نقطه دارد. اجرای STCurveToLine برروی دایره آن را به یک رشته خط تبدیل می کند که مصرف آن 1072 بایت و دارای 65 نقطه است. این افزایشی بزرگ است، اما رشته خط حاصل نشان دهنده دایره اصلی با عالی ترین درجه و شباهت زیاد به اصل و مبداء آن است؛ شما تفاوت محسوسی در هنگام مشاهده نخواهید دید. با این حال، رشته خط تولید شده توسط CurveToLineWithTolerance دارای مصرف فقط 304 بایت است و تنها 17 نقطه است، یعنی افزایش به طور قابل توجهی کمتر، با از دست دادن قابل توجه وفاداری به دایره اصلی. همانطور که در زیر نشان داده شده است، با استفاده از CurveToLineWithTolerance دایره ای تولید می کند که مشخصا از قطعه خط های مستقیم ساخته شده است:
سلام
مثل همیشه عالی بود . بسیار ممنونم
با سلام
سایت بسیار خوب و مفید دارید بسیار ممنون از مطالب مفید و کاربردی موفق و موید باشید