การเพิ่มประสิทธิภาพ FeatureView

เมื่อส่งออก FeatureCollection เป็นชิ้นงาน FeatureView คุณสามารถตั้งค่าพารามิเตอร์ที่ให้ความสำคัญกับการแสดงผลองค์ประกอบที่ระดับการซูมหนึ่งๆ (การกรอง) และวิธีจัดเรียงองค์ประกอบที่ทับซ้อนกัน (ลําดับ z) การตั้งค่าเหล่านี้ส่งผลต่อความเร็วและลักษณะการแสดงผลของออบเจ็กต์ FeatureView ส่วนต่อไปนี้อธิบายพารามิเตอร์การเพิ่มประสิทธิภาพและแสดงผลลัพธ์โดยใช้แผนภาพแนวคิดที่แบ่งเขตไทล์แผนที่ด้วยเส้นประ องค์ประกอบที่มองเห็นได้คือรูปหลายเหลี่ยมเส้นเต็ม และองค์ประกอบที่ถูกทิ้ง (ทำให้บางลง) คือรูปหลายเหลี่ยมที่มีเส้นประและไม่มีเส้นขอบ

บล็อกโค้ดต่อไปนี้เป็นตัวอย่างการส่งออกจาก FeatureCollection ไปยัง FeatureView ที่ไฮไลต์พารามิเตอร์การเพิ่มประสิทธิภาพที่อธิบายไว้ในหน้านี้

Export.table.toFeatureView({
  collection: fooFc,
  assetId: 'foo-featureview-demo',
  description: 'foo-featureview-demo',
  maxFeaturesPerTile: 1500,
  thinningStrategy: 'HIGHER_DENSITY',
  thinningRanking: ['my-property DESC'],
  zOrderRanking: ['my-property DESC']
});

ฟีเจอร์สูงสุดต่อชิ้นส่วนแผนที่

พารามิเตอร์องค์ประกอบสูงสุดต่อไทล์ (maxFeaturesPerTile) จะกำหนดจำนวนองค์ประกอบสูงสุดที่จะแสดงผลในไทล์แผนที่เดียว ค่านี้เป็นขอบเขตบนและอาจต่ำกว่ามาก ทั้งนี้ขึ้นอยู่กับกลยุทธ์การกรอง ค่านี้ตั้งค่าเป็นอะไรก็ได้ระหว่าง 1 ถึง 2000 ค่าที่สูงขึ้นจะแสดงฟีเจอร์ต่อไทล์มากขึ้น แต่ไทล์จะใช้เวลาโหลดนานขึ้น

โปรดสังเกตในตารางต่อไปนี้ว่าเมื่อค่าพารามิเตอร์ maxFeaturesPerTileลดลง จำนวนองค์ประกอบที่ตัดกับแต่ละไทล์แผนที่ก็จะลดลงด้วย ไทล์อาจมีค่าน้อยกว่าค่าสูงสุด แต่ต้องไม่เกินค่าสูงสุด

ฟีเจอร์ทั้งหมด (สําหรับการอ้างอิง)

maxFeaturesPerTile: 5

แสดงสถานที่ไม่เกิน 5 แห่งต่อการ์ด

maxFeaturesPerTile: 2

แสดงสถานที่ไม่เกิน 2 แห่งต่อการ์ด

การจัดอันดับที่บางลง

พารามิเตอร์การจัดลําดับความสำคัญในการกรอง (thinningRanking) จะควบคุมวิธีจัดลําดับความสําคัญของข้อมูลสําหรับการกรองตามประเภทเรขาคณิต ขนาดองค์ประกอบ และค่าพร็อพเพอร์ตี้องค์ประกอบ โดยรับชุดกฎที่จะแจ้งให้อัลกอริทึมการกรองให้ทราบถึงองค์ประกอบที่จะกรองออกก่อนองค์ประกอบอื่นๆ เมื่อถึง maxFeaturesPerTile แต่ละกฎประกอบด้วยพร็อพเพอร์ตี้ฟีเจอร์ตามด้วยทิศทางการจัดเรียง (จากน้อยไปมาก/ASC หรือจากมากไปน้อย/DESC) โดยอาจมีกฎตั้งแต่ 1 กฎขึ้นไป นอกจากพร็อพเพอร์ตี้องค์ประกอบแบบดั้งเดิมแล้ว ยังมีพร็อพเพอร์ตี้พิเศษ 2 รายการที่สามารถใช้เพื่อจัดลําดับความสําคัญในการทำให้บางลงได้ ได้แก่ .geometryType และ .minZoomLevel

  • .geometryType – ระบุลักษณะขององค์ประกอบเป็นจุด เส้น หรือรูปหลายเหลี่ยม ประเภทเรขาคณิตเหล่านี้จะได้รับการวัดเป็นขนาดเล็ก ปานกลาง และใหญ่ตามลำดับเพื่อวัตถุประสงค์ในการเรียงลำดับ
  • .minZoomLevel – ระดับการซูมแผนที่ต่ำสุดที่องค์ประกอบอาจแสดงผลเป็นไทล์ ระดับการซูมต่ำกว่าค่านี้จะไม่แสดงฟีเจอร์นี้ ส่วนระดับการซูมมากกว่าหรือเท่ากับค่านี้อาจแสดงฟีเจอร์ โปรดทราบว่าระดับการซูมต่ำแสดงภูมิภาคทางภูมิศาสตร์ที่ใหญ่กว่าต่อชิ้นส่วนแผนที่ 1 รายการเมื่อเทียบกับระดับการซูมสูง ฟีเจอร์จุดจะได้รับค่า 0 (แสดงในทุกระดับการซูม) เรขาคณิตของเส้นและรูปหลายเหลี่ยมจะได้รับค่าโดยอิงตามขอบเขต (เส้น) หรือพื้นที่ (รูปหลายเหลี่ยม) ขององค์ประกอบนั้นๆ โดยองค์ประกอบขนาดใหญ่จะมีค่า.minZoomLevelต่ำกว่าองค์ประกอบขนาดเล็ก

คุณสามารถระบุกฎการจัดอันดับแบบกรองออกเป็นสตริงหรือรายการสตริงก็ได้ โดยเว้นวรรคระหว่างชื่อพร็อพเพอร์ตี้และทิศทางการจัดเรียงที่ต้องการ

// String input format for setting thinning ranking based on 3 rules.
'my-property DESC, .geometryType ASC, .minZoomLevel ASC'

// List of strings input format for setting thinning ranking based on 3 rules.
['my-property DESC', '.geometryType ASC', '.minZoomLevel ASC']

กฎข้างต้นจะกำหนดอัลกอริทึมการกรองให้จัดลําดับความสําคัญขององค์ประกอบที่มีแอตทริบิวต์ "my-property" ขนาดใหญ่กว่า (กรององค์ประกอบที่มีค่า "my-property" เล็กกว่าก่อน) จัดลําดับความสําคัญขององค์ประกอบที่มีประเภทเรขาคณิตเล็กกว่า (เช่น กรองรูปหลายเหลี่ยมก่อนเส้น และเส้นก่อนจุด) และจัดลําดับความสําคัญขององค์ประกอบที่มีระดับการซูมขั้นต่ำเล็กกว่า (จุดเหนือรูปหลายเหลี่ยมขนาดใหญ่เหนือรูปหลายเหลี่ยมขนาดเล็ก)

ตารางต่อไปนี้แสดงวิธีที่การเปลี่ยนแปลงกฎ thinningRanking สําหรับพร็อพเพอร์ตี้ size ส่งผลต่อฟีเจอร์ที่วาด จํานวนองค์ประกอบทั้งหมดต่อไทล์ ("องค์ประกอบทั้งหมด") มากกว่า 5 ดังนั้นระบบจะใช้การกรองเพื่อจํากัดองค์ประกอบที่วาด (thinningRanking: 5) ในแถวแรก ฟีเจอร์จะจัดเรียงตาม size จากมากไปน้อย ซึ่งหมายความว่าฟีเจอร์ขนาดใหญ่จะมีความสำคัญมากกว่าฟีเจอร์ขนาดเล็ก (ระบบจะวาดฟีเจอร์ตามลําดับจากมากไปน้อยตามขนาดจนกว่าจะถึง maxFeaturesPerTile) ในแถวที่ 2 ระบบจะจัดเรียงองค์ประกอบตามขนาดจากน้อยไปมาก ดังนั้นระบบจะวาดองค์ประกอบที่เล็กที่สุดก่อนตามลำดับขนาดจนกว่าจะถึง maxFeaturesPerTile

thinningRanking ฟีเจอร์ทั้งหมด (สําหรับการอ้างอิง) maxFeaturesPerTile: 5

'size DESC'

จัดลําดับความสําคัญของฟีเจอร์ที่มี size มากกว่า (ลดฟีเจอร์ที่มี size น้อยกว่าก่อน)

'size ASC'

จัดลําดับความสําคัญของฟีเจอร์ที่มี size น้อยกว่า (ลดฟีเจอร์ที่มี size มากกว่าออกก่อน)

กลยุทธ์การลดจำนวน

พารามิเตอร์กลยุทธ์การกรอง (thinningStrategy) ใช้ร่วมกับการจัดอันดับการกรอง (thinningRanking) เพื่อกรองข้อมูลออกเมื่อถึงเวลาส่งออกเพื่อปรับปรุงประสิทธิภาพการแสดงผล โดยระบบรองรับกลยุทธ์ 2 รูปแบบ ได้แก่ HIGHER_DENSITY และ GLOBALLY_CONSISTENT เมื่อทำการกรองที่ระดับการซูมหนึ่งๆ กลยุทธ์การกรองที่มีความหนาแน่นสูงขึ้นหมายความว่าแต่ละไทล์อาจอยู่ใกล้กับขีดจำกัด maxFeaturesPerTile มากที่สุดโดยไม่คำนึงถึงลําดับขององค์ประกอบในไทล์อื่นๆ กลยุทธ์การกรองที่สม่ำเสมอทั่วโลกหมายความว่าหากมีการนำองค์ประกอบออกจากไทล์ใดก็ตามโดยการกรอง ระบบจะนำองค์ประกอบทั้งหมดที่มีลําดับการกรองเท่ากันหรือต่ำกว่าออกจากไทล์ทั้งหมด โดยไม่คํานึงว่าไทล์นั้นต้องได้รับการกรองหรือไม่ (เกินขีดจํากัด maxFeaturesPerTile) ใช้กลยุทธ์ HIGHER_DENSITY เพื่อเพิ่มประสิทธิภาพความหนาแน่นของฟีเจอร์ และ ใช้กลยุทธ์ GLOBALLY_CONSISTENT เพื่อเพิ่มประสิทธิภาพการแสดงระดับฟีเจอร์ที่สอดคล้องกับแต่ละไทล์

ตารางต่อไปนี้แสดงผลที่การเปลี่ยนแปลง thinningStrategy มีต่อการตัด ในตัวอย่างนี้ ระบบจะกรองข้อมูลโดยใช้รูปร่าง/สีของจุด วงกลมสีน้ำเงิน สี่เหลี่ยมจัตุรัสสีเขียว และสามเหลี่ยมสีแดงมีลําดับความหนาตามลําดับจากดีที่สุดไปแย่ที่สุด สําหรับ thinningStrategy แต่ละรายการ (HIGHER_DENSITY และ GLOBALLY_CONSISTENT) จะมีค่า maxFeaturesPerTile ที่แตกต่างกัน 3 ค่า ได้แก่ ตัวเลขที่มากพอที่จะแสดงฟีเจอร์ทั้งหมด 10 ฟีเจอร์ และ 9 ฟีเจอร์

เมื่อใช้ HIGHER_DENSITY และ 10 maxFeaturesPerTile ระบบจะกรองสามเหลี่ยมสีแดง 6 รูป (ลำดับความสำคัญต่ำสุดในการกรอง) ออกจากไทล์ด้านซ้ายบน และกรองสามเหลี่ยมสีแดง 1 รูปออกจากไทล์ด้านซ้ายล่าง เมื่อใช้ HIGHER_DENSITY และ 9 maxFeaturesPerTile ระบบจะลบสามเหลี่ยมสีแดง 7 รูปออกจากการ์ดด้านซ้ายบน และลบสามเหลี่ยมสีแดงและสี่เหลี่ยมจัตุรัสสีเขียวออกจากการ์ดด้านซ้ายล่าง ในตัวอย่างเหล่านี้ ระบบจะกรองแต่ละไทล์แยกกันโดยไม่คำนึงถึงลําดับการกรองขององค์ประกอบในไทล์ใกล้เคียง กลยุทธ์การกรองนี้อาจทําให้แผนที่ที่อยู่ติดกันดูแตกต่างกันอย่างเห็นได้ชัด แต่ก็จะเพิ่มจํานวนฟีเจอร์ที่วาดได้สูงสุด ทั้งนี้ขึ้นอยู่กับลักษณะของข้อมูล

โปรดทราบว่าGLOBALLY_CONSISTENTการกรองออกหมายความว่าหากมีการนําองค์ประกอบหนึ่งๆ ออกด้วยการกรองออกจากไทล์ใดก็ตาม ระบบก็จะนําองค์ประกอบอื่นๆ ทั้งหมดที่มีthinningRankเท่ากันหรือแย่กว่านั้นออกด้วย เมื่อตั้งค่า maxFeaturesPerTile เป็น 10 สามเหลี่ยมสีแดงจะไม่แสดงในการ์ดใดๆ เนื่องจากสามเหลี่ยมสีแดงมีขนาดเล็กลงในการ์ดซ้ายบนและซ้ายล่าง เมื่อตั้งค่า maxFeaturesPerTile เป็น 9 สี่เหลี่ยมจัตุรัสสีเขียวก็จะไม่แสดงในการ์ดใดๆ ในทำนองเดียวกัน เนื่องจากสี่เหลี่ยมจัตุรัสสีเขียวบางลงในการ์ดซ้ายล่าง กลยุทธ์การกรองนี้มีโอกาสน้อยที่จะสร้างลักษณะไทล์ที่โดดเด่นซึ่งกลยุทธ์ HIGHER_DENSITY ทำได้ แต่มีแนวโน้มที่จะกรองไทล์ให้มีจำนวนฟีเจอร์ต่ำกว่าขีดจํากัด maxFeaturesPerTile มาก

thinningStrategy ฟีเจอร์ทั้งหมด (สำหรับใช้อ้างอิง) maxFeaturesPerTile: 10 maxFeaturesPerTile: 9

'HIGHER_DENSITY'

ลดความถี่ในการลดจำนวน

รักษาความหนาแน่นขององค์ประกอบให้สูงด้วยการลดความหนาแน่นภายในไทล์

'GLOBALLY_CONSISTENT'

การปรับให้บางลงอย่างเข้มงวดมากขึ้น

รักษาอันดับการกรองขั้นต่ำที่สอดคล้องกันทั่วโลกผ่านการกรองระหว่างไทล์

การจัดอันดับตามลําดับ Z

พารามิเตอร์การจัดลําดับ z (zOrderRanking) จะควบคุมลําดับของฟีเจอร์ที่ทับซ้อนกัน โดยยอมรับชุดกฎที่กำหนดว่าองค์ประกอบใดควรปรากฏใต้/เหนือองค์ประกอบอื่นๆ เมื่อซ้อนทับกัน ตรรกะและรูปแบบกฎสำหรับการตั้งค่าลําดับฟีเจอร์เหมือนกับการจัดลําดับขั้นต่ำ โปรดดูรายละเอียดเพิ่มเติมในส่วนนั้น

กฎการจัดอันดับลําดับ Z สามารถระบุเป็นสตริงหรือรายการสตริง โดยคั่นชื่อพร็อพเพอร์ตี้และทิศทางการจัดเรียงที่ต้องการด้วยการเว้นวรรค

// String input format for setting z-order ranking based on 3 rules.
'my-property DESC, .geometryType ASC, .minZoomLevel ASC'

// List of strings input format for setting z-order ranking based on 3 rules.
['my-property DESC', '.geometryType ASC', '.minZoomLevel ASC']

กฎข้างต้นระบุว่าองค์ประกอบที่มีค่า "my-property" มากกว่าควรปรากฏใต้องค์ประกอบที่มีค่าน้อยกว่า องค์ประกอบที่มีประเภทเรขาคณิตขนาดเล็กควรปรากฏใต้องค์ประกอบที่มีประเภทเรขาคณิตขนาดใหญ่ (เช่น จุดใต้เส้นและเส้นใต้รูปหลายเหลี่ยม) และองค์ประกอบที่มีระดับการซูมต่ำสุดน้อยกว่า (องค์ประกอบขนาดใหญ่) ควรปรากฏใต้องค์ประกอบที่มีระดับการซูมต่ำสุดมากกว่า (องค์ประกอบขนาดเล็ก)

ตารางต่อไปนี้แสดงวิธีที่การเปลี่ยนแปลงกฎ zOrderRanking สําหรับพร็อพเพอร์ตี้ "size" ส่งผลต่อฟีเจอร์ที่ปรากฏอยู่ด้านหน้าฟีเจอร์อื่นๆ เมื่อฟีเจอร์ซ้อนทับกัน ในแถวแรก ระบบจะจัดเรียงองค์ประกอบตามขนาดจากมากไปน้อย ซึ่งหมายความว่าองค์ประกอบขนาดใหญ่ควรปรากฏใต้องค์ประกอบขนาดเล็ก (ระบบจะวาดองค์ประกอบขนาดใหญ่ก่อน) ในทางกลับกัน ในแถวที่ 2 ระบบจะจัดเรียงองค์ประกอบตามขนาดจากน้อยไปมาก ซึ่งหมายความว่าองค์ประกอบที่มีขนาดเล็กกว่าควรปรากฏใต้องค์ประกอบที่มีขนาดใหญ่กว่า (ระบบจะวาดองค์ประกอบขนาดเล็กก่อน)

zOrderRanking: 'size DESC'

ฟีเจอร์ที่มี size ขนาดเล็กจะปรากฏอยู่ด้านบนของฟีเจอร์ที่มี size ขนาดใหญ่

zOrderRanking: 'size ASC'

ฟีเจอร์ที่มี size ขนาดใหญ่จะปรากฏอยู่ด้านบนของฟีเจอร์ที่มี size ขนาดเล็ก