ฉันได้นำเข้าไฟล์ CSV ที่มีข้อมูลพื้นที่เชิงพื้นที่ใน varchar จากนั้นแปลงค่า varchar (max) ให้เป็น varbinary (สูงสุด) โดยการเพิ่ม 0x เป็น varchar (max) ก่อนการแปลง จากนั้นนอกเหนือจาก 0x ในตอนต้นข้อมูลในคอลัมน์ varbinary (max) มีลักษณะเหมือนกับ varchar (สูงสุด) ในการแปลงเป็นข้อความ ตอนนี้ฉันเรียกใช้สคริปต์ต่อไปนี้: WKB คือคอลัมน์ varbinary (สูงสุด) การเรียกใช้สคริปต์ด้านบนทำให้เกิดข้อผิดพลาดนี้: การป้อนข้อมูลไบนารี (WKB) ที่รู้จักกันดีไม่ถูกต้องแหล่งข้อมูลคือจาก Open Street Map ดังนั้นจึงไม่ต้องสงสัยเลยว่าข้อมูลพื้นที่ถูกต้อง ดังนั้นฉันสมมติว่าต้องมีบางอย่างผิดปกติในสิ่งที่ฉันทำหรือฉันขาดหายไปบางจุดในการแปลง WKB เป็นประเภทข้อมูลเรขาคณิต ทุกคนสามารถช่วยกรุณาฉันถือว่าปัญหาคือเมื่อแปลงข้อมูล varchar เพื่อ varbinary คุณจะแปลงแทนตัวจริงของข้อมูลไบนารีแทนที่จะเพียงแค่เปลี่ยนชนิดเป็นไบนารี เช่นถ้าคุณมีข้อมูล 0xDEADBEEF ในคอลัมน์ varchar ของคุณการแปลง (varbinary (max), DEADBEEF) จะแปลงการแทนอักขระ ascii เป็นไบนารี สิ่งที่คุณต้องการทำคือเปลี่ยนสายอักขระ hex เป็นไบนารีซึ่งเป็นไปได้โดยใช้พารามิเตอร์สไตล์ของการแปลง SELECT แปลง (varbinary (สูงสุด), DEADBEEF, 2) ควรทำในสิ่งที่คุณต้องการแปลงข้อมูล varchar wkb ของคุณให้เป็น binary จริงเพื่อนร่วมงานของฉันสังเกตเห็น ESRI Line WKB มีรูปแบบไม่ถูกต้องมีข้อมูลที่ไม่ระบุต่อท้ายและเนื่องจาก hes ไม่ใช้งาน GIS SE ฉันโพสต์คำพูดของเขาเป็นคำตอบ ฉันรอสักสองสามวันเพื่อวิพากษ์วิจารณ์ก่อนที่จะยอมรับในกรณีที่มีคนเกิดปฏิกิริยาที่ชัดเจนมากขึ้น ในระหว่างนี้ฉันสามารถสร้างข้อยกเว้นระหว่าง ESRI Line Geometry WKB และ SqlServer. Types โดยการสร้างคลาสคุณลักษณะใหม่ให้รูปทรงเรขาคณิตแบบเส้นเดียวและการเล่นซ้ำแบบบิงโก ทุกเวลา. แต่ฉัน googled นี้ทุกวันเมื่อวานนี้และไม่ได้พบการยืนยันใด ๆ นี้ ฉันต้องเป็น Google Googler ที่ไม่ถูกต้องเมื่อพยายามแปลง esriPolylineGeometry ให้ IWkb จากนั้นจึงดำเนินการส่งออกไปยัง wkbBytes และนำไปใช้ใน SqlServer. Types. SqlGeometry. STGeomFromWKB () การแปลงจะไม่ทำงานกับข้อผิดพลาดที่รู้จักกันดีไบนารี (WKB ) ป้อนข้อมูลไม่ถูกต้อง อย่างไรก็ตามหากใช้วิธีการเดียวกันเพื่อให้ได้ wkbBytes จะทำงานได้ดีเมื่อส่งผ่านตัวแปลง SharpMap Ive ทำทุกอย่างที่ฉันสามารถจินตนาการเพื่อออกกฎรูปทรงเรขาคณิตที่ไม่ดีและฉันคิดว่าแน่นอนว่ามีใครบางคนวิ่งเข้ามาก่อนหน้านี้ ด้าน ESRI ฝั่ง Ive ได้ลองใช้ ITopologyOperator เพื่อดำเนินการ. Simplify () และ. Buffer (0) และไม่สร้างความแตกต่าง Ive ยังพยายามเพิ่ม. MAKEValid () หลัง STGeomFromWKB () เพื่อใช้ no. และยังไม่มีความแตกต่างจาก IWkb. ExportToWkb () หรือทางเลือก IGeometryFactory. CreateWkbVariantFromGeometry () ดังนั้นคำถามของฉันคือ: WKB เป็นจริงไม่ถูกต้องถ้าใช่แล้วเหตุใดจึงแปลงเป็นอย่างถูกต้องใน SharpMap WKB ที่ออกมาจาก ESRI มีลักษณะดังนี้: ด้านล่างบล็อกโค้ดแรกแสดงวิธีการที่ล้มเหลวเมื่อฉันพยายามที่จะใช้วิธีการแบบคงที่ SqlGeometrys STGeomFromWKB () บล็อกที่สองแสดงวิธี SharpMap ซึ่งทำงานได้เมื่อใช้ข้อมูล wkbBytes เดียวกัน วิธีการนี้ใช้ SqlServer. Types ล้มเหลว แต่วิธีนี้ใช้ SharpMap แปลงทำงาน ทั้งสองวิธียอมรับเรขาคณิตรูปหลายเหลี่ยม แต่ฉันหวังว่าใครบางคนจะรู้วิธีที่จะใช้วิธี SqlServer. Types ในการทำงานกับรูปทรงเรขาคณิตของเส้นเนื่องจากเรามีโครงการอื่น ๆ ที่ใช้ห้องสมุดอยู่แล้ว ฉันลังเลที่จะใช้ตัวแปลง SharpMap ถ้านั่นคือคำตอบ แต่มันรบกวนจิตใจฉันว่าสภาพไม่ทราบสาเหตุ SqlServer. Types ล้มเหลวในบริบทของเรขาคณิต Line ถาม 12 ก. ค. 12 ที่ 22:09 ไม่มีการกระทำผิดกฎหมาย แต่ที่จริงข้อสรุปของเพื่อนร่วมงานของคุณเกี่ยวกับว่าสิ่งที่เขาคิดว่าควรจะทำงานไม่ได้ให้วิธีการอย่างเป็นทางการที่ควรจะทำงาน สำหรับเรื่องนี้เราอ้างถึงข้อกำหนดของ OGC ถ้าคุณอ้างถึงหน้า 66-70 คุณจะพบข้อกำหนดสำหรับเอกสารเก่าหรือหน้า 65-72 สำหรับข้อกำหนดใหม่ เพื่อสรุปผลออกไม่มีส่วนใดที่ห้ามไม่ให้ wkb มีข้อมูลตามมา ในความเป็นจริงสเปคประกอบด้วยตัวนับสำหรับทุกๆองค์ประกอบเพื่อให้คุณทราบว่าเท่าไหร่ของไบนารีหยดที่คุณควรจะแยกวิเคราะห์ มันลงไปแม้รวมถึงไบต์สำหรับการสั่งซื้อไบต์เพื่อให้คุณสามารถสลับระหว่าง endianness ของการแสดงไบนารีของทุกองค์ประกอบเรขาคณิตภายในเท่าที่คุณแยกมันจุดของฉันคือคุณก็รู้ว่าเท่าไหร่ของคุณควรจะอ่านและวิธีการที่คุณควรจะเป็น แปลมัน ไมโครซอฟท์ได้เลือกในตัวแยกวิเคราะห์เพื่อใช้เนื้อหาไบนารีต่อไปแม้ว่าจะไม่มีข้อกำหนดใดในข้อกำหนด OGC ว่าควรก็ตาม จากนั้นพวกเขาก็เลือกที่จะพิจารณาเงื่อนไขที่ไม่ถูกต้อง พวกเขาไม่ถูกต้องดีนั่นคือวิธีที่พวกเขาตีความว่าแม้ว่าหยด binary ไม่ตอบสนองข้อกำหนด การกล่าวว่า WKB ที่ ESRI ให้ไม่ถูกต้องในกรณีนี้ไม่ถูกต้อง โดยวิธีการนี้ parser WKB อื่น ๆ ทั้งหมดออกมี (GEOS, PostGIS, GDALs, ESRIs, SharpMaps, Autodesks ฯลฯ ) ยอมรับเงื่อนไขนี้เป็น OK นี่คือตัวอย่างของคุณโดยใช้ PostGIS: ตอนนี้ฉันจะเพิ่มข้อมูลไบนารีแบบสุ่มลงในตอนท้ายของรูปทรงเรขาคณิตของคุณ: บั๊กนี้เป็นจริงในตัวแยกวิเคราะห์ของ Microsoft ในจิตวิญญาณของการอภิปรายที่ดี แต่คุณต้องยอมรับว่าเป็นช่วงเวลาที่ไร้ประโยชน์อย่างยิ่งเมื่อช่วงท้ายยุคของ ESRI WKB ในปี 039 ถ้าฉันใช้วิธีเดียวกันในการแปลงรูปเรขาคณิต ESRI รูปหลายเหลี่ยมจะแสดงผลสตรีมที่สะอาด (อย่างน้อยในสายตาของตัวแยกวิเคราะห์ MS) แต่ฉันเห็นด้วยอย่างสมบูรณ์ว่าถูกต้องที่จะนับ ในความพยายามที่จะเข้าถึงสันติภาพที่ดีที่สุดฉันขอให้ ESRI มีสตรีมสกปรก แต่ MS มีตัวแยกวิเคราะห์ที่มีการกดขี่ข่มเหง มันน่าสนใจอยู่เสมอเมื่อสองส่งต่อพลังงานมารวมกันที่ศูนย์น้ำแข็ง heh ndash elrobis Jul 14 12 at 22:39 คุณมีสิทธิเกี่ยวกับไบต์เหล่านี้จะสวยไร้ประโยชน์ ไม่แน่ใจว่าพวกเขามาจากไหน (อาจมีรายละเอียดการดำเนินการภายในบางอย่าง) ถ้าคุณต้องการ nitpick ฉันจริงจะบอกว่าทุก byte เดียวใช้เพื่ออธิบาย endianness ในองค์ประกอบเรขาคณิตทุกเดียวเป็นใบ้สวยเกินไป ฉันสามารถดูว่าหยดไบนารีสามารถมาจากระบบที่แตกต่างกันและทำให้เป็นอันดับที่แตกต่างกัน แต่ฉันคิดว่าการเพิ่มไปยังทุกองค์ประกอบเป็นของเสีย ฉันสามารถดูว่าคุณจะมีหนึ่งที่จุดเริ่มต้นแม้ว่า ฉันเข้าใจว่าทำไมมันอยู่ที่นั่น แต่นั่นจะเป็นหัวข้อสำหรับการสนทนาที่ต่างกันทั้งหมด ndash Ragi Yaser Burhum 14 ก. ค. เวลา 23:59 โดยทั่วไปเพื่อนร่วมงานของฉันตอบคำถามหลักของฉันดังนั้น Im เจาะพวกเขาในที่นี่เพื่อประโยชน์ในการตอบกระทู้ หวังว่าจะมีคนสักสองสามคนที่จะลงคะแนนเสียงเพิ่มมากขึ้นโดยให้ความน่าเชื่อถือเพิ่มขึ้น Q1: ESRI Line Geometry เป็น WKB ไม่ถูกต้องใช่ใช่ wkb กล่าวว่ามี 9 จุดในบรรทัดแล้วตัวแยกวิเคราะห์ควรอ่าน 9 จุด MS (ถูกต้อง) ตรวจพบข้อมูลเพิ่มเติม (เป็น 10 0s) และบอก messed up ของ 10 0s เป็น 5 ไบต์ในอาร์เรย์ต้นฉบับ ลบที่ผ่านมา 10 0s และดีเช่น .. Q2: ถ้า WKB ไม่ถูกต้องจริงๆทำไม SharpMap ห้องสมุดสามารถที่จะแปลงมันฉัน 100 แน่ใจว่าทำไม sharplib ไม่ล้มเหลว: รูปแบบบอกว่ามี 9 จุด ถ้าคุณไม่จู้จี้จุกจิกคุณเพียงแค่หยุดอ่านหนังสือและทุกอย่างดูดีๆ และ. ทำไมคุณต้องตรวจสอบว่าไม่มีไบต์มาก ดังนั้น im ค่อนข้างมั่นใจว่า SharpLib ไม่ได้จัดการมันโดยเฉพาะ พวกเขาเพียงแค่หยุดอ่านหลังจากที่ 9 จุดและทุกอย่างดูเหมือนจะทำงาน ขอบคุณ MS ไม่เพียงแค่ปล่อย Bits Bytes ไว้รอบ ๆ สำหรับเหตุผลที่ ESRI WKB มีรูปแบบไม่ถูกต้องฉันได้คาดเดาไม่กี่: พวกเขาจัดสรร x จำนวนไบต์ในแต่ละครั้งและไม่แม่นยำเกี่ยวกับการปิดอาร์เรย์ไบต์ หรือ. พวกเขา เมื่อนับจำนวนไบต์จะใช้ความยาวของร่างกายและเพิ่มความยาวส่วนหัวเกินไป (encodeinfo 1 ไบต์, ประเภทธรณีประตู 1 ไบต์, 8 ไบต์ของจำนวนจุดในบรรทัด) และอย่างใดเมื่อนับร่างกายพวกเขารวมความยาว ของส่วนหัว ทำให้เกิดขนาดหัวต่อคู่ อย่างไรก็ตาม thats คาดเดาเท่านั้นและ im ไม่แน่ใจว่าข้อมูลเป็นสิ่งที่ดีสำหรับการที่เราลาดเททำอะไรเกี่ยวกับมันต่อไป :-) # 13 Jul 12 12 เมื่อ 15: 51 เมื่อคุณระบุไฟล์รูปร่างเป็นแหล่งข้อมูลเชิงพื้นที่และตั้งอยู่บน คอมพิวเตอร์ภายในเครื่องข้อมูลเชิงพื้นที่จะถูกฝังอยู่ในรายงานโดยอัตโนมัติ ในการใช้ข้อมูลเชิงพื้นที่จากแฟ้ม ESRI แบบไดนามิกคุณต้องทำสิ่งต่อไปนี้: อัปโหลดไฟล์. shp และ. dbf ไปยังโฟลเดอร์เดียวกันบนเซิร์ฟเวอร์รายงานจากนั้นเชื่อมโยงไปยังไฟล์. shp เป็นแหล่งข้อมูลเชิงพื้นที่ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้โปรดดูบทความต่อไปนี้แผนที่ (โปรแกรมสร้างรายงาน 3.0 และ SSRS): msdn. microsoften-uslibraryee240845 (SQL.105).aspx หากคุณมีข้อสงสัยใด ๆ โปรดแจ้งให้เราทราบ ได้รับการตอบรับเป็นอย่างดีจาก Eileen Zhao Sunday, July 17, 2011 7:20 PM การตอบกลับทั้งหมดเมื่อคุณระบุไฟล์รูปร่างเป็นแหล่งข้อมูลเชิงพื้นที่และอยู่ในเครื่องคอมพิวเตอร์ของคุณ ข้อมูลจะถูกฝังอยู่ในรายงานโดยอัตโนมัติ ในการใช้ข้อมูลเชิงพื้นที่จากแฟ้ม ESRI แบบไดนามิกคุณต้องทำสิ่งต่อไปนี้: อัปโหลดไฟล์. shp และ. dbf ไปยังโฟลเดอร์เดียวกันบนเซิร์ฟเวอร์รายงานจากนั้นเชื่อมโยงไปยังไฟล์. shp เป็นแหล่งข้อมูลเชิงพื้นที่ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้โปรดดูบทความต่อไปนี้แผนที่ (โปรแกรมสร้างรายงาน 3.0 และ SSRS): msdn. microsoften-uslibraryee240845 (SQL.105).aspx หากคุณมีข้อสงสัยใด ๆ โปรดแจ้งให้เราทราบ ทำเครื่องหมายว่าตอบโดย Eileen Zhao วันอาทิตย์ที่ 17 กรกฎาคม 2011 เวลา 04:38 น. จันทร์, 11 กรกฎาคม 2011 7:20 น. ฉันพบข้อผิดพลาดนี้แม้ว่าข้อมูลในตัวจะถูกฝังอยู่ในรายงานก็ตาม สาเหตุที่อาจเป็นสาเหตุไม่สามารถเป็นได้ อาทิตย์ที่ 8 มกราคม 2012 เวลา 18:18 น. ไฟล์ shp ขนาดใหญ่บางส่วนได้ก่อให้เกิดข้อผิดพลาดนี้เมื่อมีการปรับการควบคุมแผนที่เพื่อให้ใช้พื้นที่น้อยลง ปัญหาอาจเกิดขึ้นได้หากเลือกระดับการประหยัดพื้นที่ที่แตกต่างกันเล็กน้อย ดูเหมือนว่าอัลกอริทึมที่ใช้ในการบีบอัดข้อมูลแผนที่อาจทำให้ข้อมูลไบนารีไม่ถูกต้องในการตั้งค่าบางอย่าง แต่ให้ข้อมูลที่ถูกต้องโดยใช้การตั้งค่าต่างกันเล็กน้อย เสนอเป็นคำตอบโดย Stefan Granath อาทิตย์ 6 ธันวาคม 2015 4:19 AM พฤหัสบดี, มกราคม 12, 2012 3:47 น. ไมโครซอฟท์กำลังทำการสำรวจออนไลน์เพื่อทำความเข้าใจกับความคิดเห็นของคุณเกี่ยวกับเว็บไซต์ Msdn Web site หากคุณเลือกที่จะเข้าร่วมการสำรวจออนไลน์จะนำเสนอแก่คุณเมื่อคุณออกจากเว็บไซต์ Msdn Web คุณต้องการเข้าร่วม 2017 Microsoft สงวนลิขสิทธิ์.
No comments:
Post a Comment