আর্কজিআইএস ডেস্কটপ ব্যবহার করে বিক্ষিপ্ত পয়েন্টগুলি ম্যাপ করতে গতিশীল পৃষ্ঠাগুলির সংখ্যা হ্রাস করছেন?


10

সময়ে সময়ে আমাকে আগ্রহের বিষয়গুলি দেখানোর জন্য মানচিত্র বইটি তৈরি করতে হবে। নিয়মিত জাল ব্যবহার করে পৃষ্ঠা তৈরির প্রথম পদক্ষেপ:

এখানে চিত্র বর্ণনা লিখুন

সমাধানটি আমি পছন্দ করি না কারণ ক) একক পয়েন্ট সহ কয়েকটি পৃষ্ঠা রয়েছে (যেমন পৃষ্ঠা 25) প্রান্তে বসে আছে এবং খ) খুব বেশি পৃষ্ঠা রয়েছে।

কোডটি ব্যবহার করে প্রথম সংখ্যাটি সমাধান করা সহজ, - পৃষ্ঠার আয়তক্ষেত্রটি প্রাসঙ্গিক পয়েন্টের কেন্দ্রে স্থানান্তরিত করুন:

এখানে চিত্র বর্ণনা লিখুন

আমি এখনও এটি পছন্দ করি না, এটি খুব ভিড়যুক্ত দেখাচ্ছে কারণ পৃষ্ঠাগুলির সংখ্যা একই রয়েছে। মনে রাখবেন, তারা সকলেই একাধিক প্রতিবেদনে আসল এ 3 পেপার পৃষ্ঠাগুলি শেষ করে!

সুতরাং আমি একটি কোড রান্না করেছি যা পৃষ্ঠাগুলির সংখ্যা হ্রাস করে। 45 থেকে 34 পর্যন্ত এই উদাহরণে।

এখানে চিত্র বর্ণনা লিখুন

আমি নিশ্চিত নই যে এটি সর্বোত্তম ফলাফল যা অর্জন করা যায়,

সমস্ত পয়েন্ট ক্যাপচারের জন্য প্রদত্ত আকারের আয়তক্ষেত্রের সংখ্যা কমিয়ে আনার জন্য পয়েন্টগুলির মাধ্যমে ঝাঁকুনির জন্য সেরা কৌশল (সিউডো কোড, প্রকাশনা, পাইথন লাইব্রেরি) কী? অবশ্যই, কেউ এটি গেম তত্ত্ব, সামরিক শিল্প বা ফিশিং শিল্পে আবিষ্কার করেছেন

এটি মূল প্রশ্নের আপডেট:

এটি প্রয়োজনীয় প্রকৃত পরিমাণ এবং পৃষ্ঠার আকার দেখায়:

এখানে চিত্র বর্ণনা লিখুন

নিকটে জুম 164 পৃষ্ঠাগুলির মধ্যে 10 দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

স্যাম্পল পয়েন্ট ফিচার ক্লাস

আয়তক্ষেত্রের আকার সীমাতে থাকা মাত্রই পরিবর্তন হতে পারে, অর্থাত্ ছোট smaller


2
আমার মতে নিয়মিত জাল সেরা বিকল্প। মানচিত্র পাঠকরা এরকম কিছু প্রত্যাশা করছেন কারণ তারা এতে অভ্যস্ত। অন্য বিকল্পগুলি ভিড় করে এবং আমার মতে, বিভ্রান্তিকর। অবশ্যই যথাযথভাবে তৈরি করা অ্যালগরিদমগুলি যা আপনার যা তা করবে তা কিন্তু আপনার শ্রোতারা তাদের প্রশংসা করবে বলে আমি মনে করি না। +1 যদিও আপনি যা করার চেষ্টা করছেন তাতে আমি প্রশংসা করি। পরিশেষে, পৃষ্ঠাগুলির সংখ্যা হ্রাস করার একটি উপায় হল স্কেল পরিবর্তন করা।
ফেজার

আমি বেশিরভাগই ফেজারের সাথে একমত এমন কিছু ঘটনা রয়েছে যেখানে অবিচ্ছিন্ন মানচিত্রের বইয়ের জায়গা রয়েছে এবং আমি উত্তরগুলি দেখতে আগ্রহী (আপনি যদি ভাগ করতে চান তবে আপনার বর্তমান কোডটিও)। উদাহরণস্বরূপ, ট্রেইলের একটি বই যেখানে আপনি প্রতিটি মানচিত্র তার নিজস্ব মানচিত্রে চান এবং অন্যকে দেখানোর বিষয়ে চিন্তা করেন না (যদিও আপনি এখনও ছোট আকারের একক মানচিত্রগুলি সেগুলি সমস্ত আপেক্ষিক অবস্থানে দেখিয়ে দিতে চান)। শুধু তোমার উদাহরণস্বরূপ চিত্র দিকে তাকিয়ে আমার মনে হয় এই ক্ষেত্রে আপনি হবে যদি না পয়েন্ট একটি সহজাত গ্রুপিং সম্পত্তি আছে পৃষ্ঠাগুলির মধ্যে একটি ক্রমাগত কভারেজ চাই, যদিও তা অতিরিক্ত অর্থ।
ক্রিস ডব্লিউ

@ ফিজার, নিয়মিত জাল কাজ করে যখন পৃষ্ঠার আকার মোট পরিমাণের সাথে তুলনীয় হয়, এই এবং স্কেল পরিবর্তন উভয়ই এখানে নয়
ফেলিক্সআইপি

1
@ মাইকেলমাইলস-সিমিটসন, অ্যাভিনিউ ব্যবহার করে আমি যা করেছি তা পাইথনে করণীয়। প্রাক্তন ব্যবহৃত হয় কারণ জ্যামিতি গেমগুলিতে প্রাক্তন এখনও আরও উন্নত। পয়েন্টটি বেছে নিন, নিকটতম ম্যানহাটনের দূরত্বের প্রতিবেশীটি সন্ধান করুন, মাল্টিপয়েন্ট তৈরি করুন, সীমা অর্জন করুন। সীমা ছাড়িয়ে গেলে প্রস্থান করুন। মূল তালিকা থেকে গোষ্ঠীভুক্ত করা হয়েছে, বাকিটি নিয়ে এগিয়ে যান। আমি বাছাইয়ের আদেশটিকে গুরুত্বপূর্ণ মনে করে পরিবর্তনের চেষ্টা করেছি। খুব সামান্য পার্থক্য ...
ফেলিক্সআইপি

1
হ্যাঁ, এটি অজস্র লক্ষণীয় প্রচেষ্টা সহ অযোগ্য। জ্যামিতির সাথে কাজ করার সময় আমি সি # তে আর্কওবজেক্টগুলি পছন্দ করি। ক্রিস যেমন বলেছিল যে তারা ইতিমধ্যে ন্যূনতম দেখাচ্ছে তবে কেন আপনি যা পেয়েছেন তা স্থির করেন না এবং এটি সম্পন্ন করে ডাকেন।
মাইকেল সিলিমসন

উত্তর:


4

এটি উত্তর নয়, আমি কেবল ভেবেছিলাম যারা আগ্রহী তাদের জন্য আমি পাইথন সমাধান পোস্ট করেছি:

# ---------------------------------------------------------------------------
# PAGE MAKER
# 
# ---------------------------------------------------------------------------
# Import arcpy module
import arcpy, traceback, os, sys
from arcpy import env

width=650
height=500

try:
    def showPyMessage():
            arcpy.AddMessage(str(time.ctime()) + " - " + message)
    mxd = arcpy.mapping.MapDocument("CURRENT")
    points = arcpy.mapping.ListLayers(mxd,"points")[0]
    pgons = arcpy.mapping.ListLayers(mxd,"pages")[0]

    g=arcpy.Geometry()
    geometryList=arcpy.CopyFeatures_management(points,g)
    geometryList=[p.firstPoint for p in geometryList]
    curT = arcpy.da.InsertCursor(pgons,"SHAPE@")
    while True:
        nPoints=len(geometryList)
        small=[geometryList.pop(0)]
        for p in geometryList:
            small.append(p)
            mPoint=arcpy.Multipoint(arcpy.Array(small))
            ext=mPoint.extent
            cHeight=ext.height
            cWidth=ext.width
            if cHeight>height or cWidth>width:
                small.remove(p)
        mPoint=arcpy.Multipoint(arcpy.Array(small))
        ext=mPoint.extent
        xC=(ext.XMin+ext.XMax)/2
        yC=(ext.YMin+ext.YMax)/2
        LL=arcpy.Point (xC-width/2,yC-height/2)
        UL=arcpy.Point (xC-width/2,yC+height/2)
        UR=arcpy.Point (xC+width/2,yC+height/2)
        LR=arcpy.Point (xC+width/2,yC-height/2)
        pgon=arcpy.Polygon(arcpy.Array([LL,UL,UR,LR]))
        curT.insertRow((pgon,))
        short=filter(lambda x: x not in small,geometryList)
        arcpy.AddMessage('Grabbed %i points, %i to go' %(len(small),len(short)))
        if len(short)==0: break
        geometryList=short[:]
    del mxd
except:
    message = "\n*** PYTHON ERRORS *** "; showPyMessage()
    message = "Python Traceback Info: " + traceback.format_tb(sys.exc_info()[2])[0]; showPyMessage()
    message = "Python Error Info: " +  str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"; showPyMessage()

জরিপ পরিকল্পনার জন্য ইদানীং এটি প্রয়োগ করেছে:

এখানে চিত্র বর্ণনা লিখুন

হালনাগাদ:

দেখে মনে হচ্ছে কিছু ধাঁচের জন্য প্রথমে 'বিপথগামী' পয়েন্টগুলির সাথে যোগাযোগ করার উপায়। এগুলি সনাক্ত করার জন্য আমি 'উত্তল হাল' খোসার ব্যবহার করেছি, হুবুহু ধারণা, পোস্ট খুঁজে পাচ্ছেন না, দুঃখিত।

এখানে চিত্র বর্ণনা লিখুন


আপনি কি খুঁজছেন এই @Wuber এর পোস্ট? gis.stackexchange.com/a/161855/115
পলিজিও

হ্যাঁ তাই হয়। আমি "শিকার" শুরুর আগে পয়েন্টগুলি বাছাই করতাম। আমি আগামীকাল নিজের উত্তর আপডেট করব। ডেস্কটপ ছাড়া সহজ নয়
ফেলিক্সআইপি

2

এটি সর্বাধিক কভারেজ সমস্যার জ্যামিতিক সংস্করণের মতো দেখায় যা সেট কভার সমস্যাটির সাথে ঘনিষ্ঠভাবে জড়িত এবং সেগুলি দুটি এনপি-কমপ্লিট।

সুতরাং এটি সমাধান করার জন্য, কেউ অনুমান ব্যবহার করতে পারে use আমি নিম্নলিখিত অ্যালগরিদম চেষ্টা করব এবং এটি পুরোপুরি কার্যকর বলে মনে হচ্ছে। যদিও সমস্যার জটিলতার কারণে আমরা এর সেরা উত্তর খুঁজে পাই না।

  1. Foreach পয়েন্ট এলোমেলো দূরত্বে N = 10 আয়তক্ষেত্র উত্পন্ন করে; কেবল আয়তক্ষেত্রটি বিন্দুটি কভার করে তা নিশ্চিত করার জন্য (প্রতিটি আয়তক্ষেত্রে কমপক্ষে একটি বিন্দু এর সাথে সম্পর্কিত এবং প্রতিটি বিন্দু অন্তত একটি আয়তক্ষেত্রের অন্তর্গত)
  2. সমস্ত পয়েন্ট আচ্ছাদিত না হওয়া পর্যন্ত পুনরাবৃত্তি করুন: অনাবৃত পয়েন্টের সর্বাধিক সংখ্যক আচ্ছাদিত আয়তক্ষেত্র পান। আচ্ছাদন হিসাবে পয়েন্ট চিহ্নিত করুন।

কেবলমাত্র বৃত্তের জন্য এই অ্যালগরিদমের একটি বাস্তবায়ন এখানে: http://jsfiddle.net/nwvao72r/3/


1
আপনি gis.stackexchange.com/q/227344/115 না দেখে আগ্রহী হতে পারেন।
পলিজিও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.