如何生成表示pyqgis中特定层中所有功能的邻接矩阵?

问题描述

我正在pyqgis中创建一个函数,该函数生成特定层中所有多边形的邻接矩阵。但是,此矩阵的索引存在问题:对于大小为n = 4(其中n是图层中要素数量)的矩阵,如果我使用range(n)或range(1,n + 1 ),出现错误。但是如果我改用range(1,n + 2)(或者通常是range(y,n + y + 1)),那就可以了。问题在于,我最终得到的矩阵为5x5,其中包含空行和空列。

在这一层中,我有4个要素(多边形)

mylayer_square

这是代码

baz

这就是我得到的:

private void inisialisasi() {
        providers = Arrays.asList(
                new AuthUI.IdpConfig.PhoneBuilder().build(),new AuthUI.IdpConfig.GoogleBuilder().build()
        );

        Intent intentFBase =AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(Arrays.asList(
                        //new AuthUI.IdpConfig.GoogleBuilder().build(),new AuthUI.IdpConfig.PhoneBuilder()
                                .build()
                ))
                .setlogo(R.drawable.warung_acil)
                .setTheme(R.style.firebaselogintheme)
                .setIsSmartLockEnabled(true)
                .build();
        startActivityForResult(intentFBase,RC_SIGN_IN);
    }

    protected void onActivityResult(int requestCode,int resultCode,@Nullable Intent data) {
            super.onActivityResult(requestCode,resultCode,data);
            if(requestCode == RC_SIGN_IN)
            {
                IdpResponse response = IdpResponse.fromresultIntent(data);
                    // Successfully signed in
                    if (resultCode == RESULT_OK) {
                        //simpan token ke realtimedatabase
                        FirebaseInstanceId.getInstance().getInstanceId()
                                .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
                                    @Override
                                    public void onComplete(@NonNull Task<InstanceIdResult> task) {
                                        if(task.isSuccessful())
                                        {
                                            final String token = task.getResult().getToken();
                                            //Toast.makeText(Login_With_Firebase.this,"Token: "+token,Toast.LENGTH_SHORT).show();
                                            Log.d("TAG","token : "+token);
                                            Timer t = new Timer(false);
                                            t.schedule(new TimerTask() {
                                                @Override
                                                public void run() {
                                                    runOnUiThread(new Runnable() {
                                                        public void run() {
                                                            SimpanTokenKeFirestore(token);
                                                        }
                                                    });
                                                }
                                            },500);
    
                                        }
                                        else
                                        {
                                            Toast.makeText(Login_With_Firebase.this,"Gagal Login",Toast.LENGTH_SHORT).show();
                                        }
                                    }
                                });
                    } else {
                        // Sign in Failed
                        if (response == null) {
                            // User pressed back button
                            Toast.makeText(this,"Sign In Cancelled",Toast.LENGTH_SHORT).show();
                            return;
                        }
    
                        if (response.getError().getErrorCode() == ErrorCodes.NO_NETWORK) {
                            Toast.makeText(this,"No Network",Toast.LENGTH_SHORT).show();
                            return;
                        }
    
                        Toast.makeText(this,"Sign In Error",Toast.LENGTH_SHORT).show();
                        Log.e("TAG","Sign-in error: ",response.getError());
                    }
            }
        }
    
        private void SimpanTokenKeFirestore(final String tokennya) {
            firebaseAuth = FirebaseAuth.getInstance();
            if(firebaseAuth.getCurrentUser().getPhoneNumber() != null)
            {
                username = firebaseAuth.getCurrentUser().getPhoneNumber();
                if(username == null || username == "")
                {
                    Toast.makeText(this,"Error Login",Toast.LENGTH_LONG).show();
                    return;
                }
    
                SharedPrefManager.getInstance(Login_With_Firebase.this).setUsernameHape(username);
                CollectionReference FolderUser = dbfirestore.collection("Users");
                Query queryinsert = FolderUser.whereEqualTo("username",username).limit(1);
                queryinsert.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                    @Override
                    public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                        if(queryDocumentSnapshots.isEmpty())
                        {
                            //add
                            Toast.makeText(Login_With_Firebase.this,"Selamat Datang "+username,Toast.LENGTH_SHORT).show();
                            ket_review.add("0@@0@@");
                            Users userrrnya = new Users(username,tokennya,"Pembeli",0.0,ket_review);
                            CollectionReference FolderuseRSS = dbfirestore.collection("Users");
                            FolderuseRSS.document(username).set(userrrnya).addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    //masukkan saldo awal
                                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm::ss",Locale.getDefault());
                                    String currentDateandTime = sdf.format(new Date());
                                    ket_topup_each.add(currentDateandTime+"@@Saldo Awal@@0");
                                    ket_transaksi_each.add(currentDateandTime+"@@Member Baru@@0");
                                    ClassSaldoMember classSaldoMember = new ClassSaldoMember(username,1,ket_topup_each,ket_transaksi_each);
                                    CollectionReference FolderTopUp = dbfirestore.collection("TopUpHistory");
                                    FolderTopUp.add(classSaldoMember).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                                        @Override
                                        public void onSuccess(DocumentReference documentReference) {
                                            if(SharedPrefManager.getInstance(getApplicationContext()).isRequestLoginFromCheckOutPageSet())
                                            {
                                                Intent returnIntent = new Intent();
                                                returnIntent.putExtra("hasilReturn","berhasil");
                                                setResult(RESULT_OK,returnIntent);
                                                finish();
                                            }
                                            else
                                            {
    //                                Intent returnIntent = new Intent();
    ////                                returnIntent.putExtra("hasilReturn","login_berhasil");
    ////                                setResult(RESULT_OK,returnIntent);
    ////                                finish();
                                                Intent intent = new Intent(Login_With_Firebase.this,MainActivity.class);
                                                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                                                startActivity(intent);
                                                finish();
                                            }
                                        }
                                    });
                                }
                            }).addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    Toast.makeText(Login_With_Firebase.this,"tidak bisa menyimpan data User",Toast.LENGTH_SHORT).show();
                                }
                            });
    
                        }
                        else
                        {
                            for(QueryDocumentSnapshot snapshot: queryDocumentSnapshots)
                            {
                                if(snapshot.exists()){
                                    idDocument = snapshot.getId();
                                }
                            }
                            //update
                            Map<String,Object> mapp = new HashMap<>();
                            mapp.put("token",tokennya);
                            CollectionReference FolderUseRSSs = dbfirestore.collection("Users");
                            FolderUseRSSs.document(username).update(mapp).addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    Toast.makeText(Login_With_Firebase.this,"Selamat Datang",Toast.LENGTH_SHORT).show();
                                    Intent intent = new Intent(Login_With_Firebase.this,MainActivity.class);
                                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                                    startActivity(intent);
                                    finish();
                                }
                            });
                        }
                    }
                });
            }
            else
            {
                Toast.makeText(this,"Current get phone Number User is Null",Toast.LENGTH_LONG).show();
            }
    
    
    
    
        }

如您所见,我得到了这个5x5矩阵,因为有一行和一列表示“第零个特征”。如何获得具有正确数量的特征的矩阵(在这种情况下为4,但是我希望每n个矩阵都正确)?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)